diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 4c59370..0c0c338 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -3,20 +3,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListAdapter.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListAdapter.java
index 3801013..234444b 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListAdapter.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListAdapter.java
@@ -10,6 +10,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.thebrokenrail.mtudining.activity.menu.MenuActivity;
import com.thebrokenrail.mtudining.activity.task.Task;
import com.thebrokenrail.mtudining.activity.task.TaskAdapter;
+import com.thebrokenrail.mtudining.api.method.AllLocations;
+import com.thebrokenrail.mtudining.util.Category;
import com.thebrokenrail.mtudining.widget.CategoryView;
/**
@@ -31,25 +33,20 @@ class ListAdapter extends TaskAdapter {
@Override
protected void bindItemView(View view, int position) {
- ListData.Category data = getResult().categories.get(position - getFirstElementPosition());
+ Category data = getResult().categories.get(position - getFirstElementPosition());
// Setup View
CategoryView category = (CategoryView) view;
- category.setup(data.isOpen, data.name, () -> {
+ category.setup(data, () -> {
// Open/Close Category
data.isOpen = !data.isOpen;
notifyItemChanged(getResult().categories.indexOf(data) + getFirstElementPosition());
+ }, location -> {
+ // Open Menu
+ Intent intent = new Intent(category.getContext(), MenuActivity.class);
+ intent.putExtra(MenuActivity.ID_EXTRA, location.id);
+ intent.putExtra(MenuActivity.NAME_EXTRA, location.name);
+ category.getContext().startActivity(intent);
});
- // Add Locations
- category.clearItems();
- for (ListData.Category.Element location : data.locations) {
- category.addItem(location.name, () -> {
- // Open Menu
- Intent intent = new Intent(category.getContext(), MenuActivity.class);
- intent.putExtra(MenuActivity.ID_EXTRA, location.id);
- intent.putExtra(MenuActivity.NAME_EXTRA, location.name);
- category.getContext().startActivity(intent);
- });
- }
}
@Override
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListData.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListData.java
index b8f781a..6159737 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListData.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListData.java
@@ -1,5 +1,8 @@
package com.thebrokenrail.mtudining.activity.list;
+import com.thebrokenrail.mtudining.api.method.AllLocations;
+import com.thebrokenrail.mtudining.util.Category;
+
import java.util.ArrayList;
import java.util.List;
@@ -7,28 +10,8 @@ import java.util.List;
* Data to be displayed in {@link ListActivity}.
*/
class ListData {
- public static class Category {
- public static class Element {
- public final String id;
- public final String name;
-
- public Element(String id, String name) {
- this.id = id;
- this.name = name;
- }
- }
-
- public final String name;
- public boolean isOpen = true;
- public final List locations = new ArrayList<>();
-
- public Category(String name) {
- this.name = name;
- }
- }
-
public final String siteId;
- public final List categories = new ArrayList<>();
+ public final List> categories = new ArrayList<>();
ListData(String siteId) {
this.siteId = siteId;
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListTask.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListTask.java
index 9bb64b2..9bef532 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListTask.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/list/ListTask.java
@@ -4,6 +4,7 @@ import com.thebrokenrail.mtudining.activity.task.Task;
import com.thebrokenrail.mtudining.api.Connection;
import com.thebrokenrail.mtudining.api.method.AllLocations;
import com.thebrokenrail.mtudining.api.method.Info;
+import com.thebrokenrail.mtudining.util.Category;
import com.thebrokenrail.mtudining.util.Constants;
/**
@@ -30,15 +31,15 @@ class ListTask extends Task {
for (AllLocations.Response.Building building : allLocationsResponse.buildings) {
if (building.active) {
// Found Active Building
- ListData.Category category = new ListData.Category(building.name);
+ Category category = new Category<>(building.name);
for (AllLocations.Response.Location location : building.locations) {
if (location.active) {
// Found Active Location
- category.locations.add(new ListData.Category.Element(location.id, location.name));
+ category.items.add(location);
}
}
// Skip Empty Category
- if (category.locations.size() > 0) {
+ if (category.items.size() > 0) {
data.categories.add(category);
}
}
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/ItemDialog.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/ItemDialog.java
new file mode 100644
index 0000000..f402ff9
--- /dev/null
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/ItemDialog.java
@@ -0,0 +1,10 @@
+package com.thebrokenrail.mtudining.activity.menu;
+
+/**
+ * Dialog for a food item.
+ */
+public class ItemDialog {
+ public void show() {
+
+ }
+}
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuAdapter.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuAdapter.java
index 332eb8e..e778057 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuAdapter.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuAdapter.java
@@ -12,6 +12,8 @@ import com.google.android.material.textfield.TextInputLayout;
import com.thebrokenrail.mtudining.R;
import com.thebrokenrail.mtudining.activity.task.Task;
import com.thebrokenrail.mtudining.activity.task.TaskAdapter;
+import com.thebrokenrail.mtudining.api.method.PeriodDetail;
+import com.thebrokenrail.mtudining.util.Category;
import com.thebrokenrail.mtudining.util.DateUtil;
import com.thebrokenrail.mtudining.widget.CategoryView;
import com.thebrokenrail.mtudining.widget.CustomDropDownView;
@@ -56,21 +58,16 @@ class MenuAdapter extends TaskAdapter {
protected void bindItemView(View view, int position) {
MenuData.Meal meal = getMeal();
assert meal != null;
- MenuData.Meal.Category data = meal.categories.get(position - getFirstElementPosition());
+ Category data = meal.categories.get(position - getFirstElementPosition());
// Setup View
CategoryView category = (CategoryView) view;
- category.setup(data.isOpen, data.name, () -> {
+ category.setup(data, () -> {
// Open/Close Category
data.isOpen = !data.isOpen;
notifyItemChanged(meal.categories.indexOf(data) + getFirstElementPosition());
+ }, item -> {
+ // Do Something!
});
- // Add Locations
- category.clearItems();
- for (MenuData.Meal.Category.Element item : data.items) {
- category.addItem(item.name, () -> {
- // Do Something!
- });
- }
}
@Override
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuData.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuData.java
index daa0290..a596a3b 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuData.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuData.java
@@ -1,33 +1,16 @@
package com.thebrokenrail.mtudining.activity.menu;
+import com.thebrokenrail.mtudining.api.method.PeriodDetail;
+import com.thebrokenrail.mtudining.util.Category;
+
import java.util.ArrayList;
import java.util.List;
class MenuData {
public static class Meal {
- public static class Category {
- public static class Element {
- public final String name;
- public final String description;
-
- public Element(String name, String description) {
- this.name = name;
- this.description = description;
- }
- }
-
- public final String name;
- public boolean isOpen = true;
- public final List items = new ArrayList<>();
-
- public Category(String name) {
- this.name = name;
- }
- }
-
public final String id;
public final String name;
- public final List categories = new ArrayList<>();
+ public final List> categories = new ArrayList<>();
public Meal(String id, String name) {
this.id = id;
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuTask.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuTask.java
index c154a3c..42beb46 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuTask.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuTask.java
@@ -4,6 +4,7 @@ import com.thebrokenrail.mtudining.activity.task.Task;
import com.thebrokenrail.mtudining.api.Connection;
import com.thebrokenrail.mtudining.api.method.PeriodDetail;
import com.thebrokenrail.mtudining.api.method.Periods;
+import com.thebrokenrail.mtudining.util.Category;
import com.thebrokenrail.mtudining.util.Constants;
import java.util.Comparator;
@@ -77,15 +78,13 @@ public class MenuTask extends Task {
// Add Data
for (PeriodDetail.Response.Menu.PeriodData.MenuCategory category : periodDetailResponse.menu.periods.categories) {
- MenuData.Meal.Category menuCategory = new MenuData.Meal.Category(category.name);
+ Category menuCategory = new Category<>(category.name);
// Sort Items
category.items.sort(Comparator.comparingInt(a -> a.sort_order));
// Add Items To Category
- for (PeriodDetail.Response.Menu.PeriodData.MenuCategory.MenuItem item : category.items) {
- menuCategory.items.add(new MenuData.Meal.Category.Element(item.name, item.desc));
- }
+ menuCategory.items.addAll(category.items);
// Skip Empty Category
if (menuCategory.items.size() > 0) {
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/task/TaskAdapter.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/task/TaskAdapter.java
index 6b3151c..6cc1990 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/activity/task/TaskAdapter.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/task/TaskAdapter.java
@@ -202,7 +202,7 @@ public abstract class TaskAdapter extends RecyclerView.Adapter void send(Method method, Consumer success, Runnable error) {
// Build URL
String url = Constants.API_BASE + method.getPath();
- System.out.println("GO: " + url);
// Build Request
Request request = new Request.Builder()
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/api/method/AllLocations.java b/app/src/main/java/com/thebrokenrail/mtudining/api/method/AllLocations.java
index 8eabc03..4fbb054 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/api/method/AllLocations.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/api/method/AllLocations.java
@@ -1,6 +1,7 @@
package com.thebrokenrail.mtudining.api.method;
import com.thebrokenrail.mtudining.api.Method;
+import com.thebrokenrail.mtudining.util.Category;
import java.util.List;
@@ -38,10 +39,15 @@ public class AllLocations implements Method {
public List locations;
}
public List buildings;
- public static class Location {
+ public static class Location implements Category.Named {
public String id;
public String name;
public boolean active;
+
+ @Override
+ public String getName() {
+ return name;
+ }
}
public List locations;
}
diff --git a/app/src/main/java/com/thebrokenrail/mtudining/api/method/PeriodDetail.java b/app/src/main/java/com/thebrokenrail/mtudining/api/method/PeriodDetail.java
index b34eb80..197b7ca 100644
--- a/app/src/main/java/com/thebrokenrail/mtudining/api/method/PeriodDetail.java
+++ b/app/src/main/java/com/thebrokenrail/mtudining/api/method/PeriodDetail.java
@@ -1,6 +1,7 @@
package com.thebrokenrail.mtudining.api.method;
import com.thebrokenrail.mtudining.api.Method;
+import com.thebrokenrail.mtudining.util.Category;
import com.thebrokenrail.mtudining.util.DateUtil;
import java.util.Date;
@@ -33,10 +34,15 @@ public class PeriodDetail implements Method {
public static class Menu {
public static class PeriodData {
public static class MenuCategory {
- public static class MenuItem {
+ public static class MenuItem implements Category.Named {
public String name;
public String desc;
public int sort_order;
+
+ @Override
+ public String getName() {
+ return name;
+ }
}
public String name;
public List