diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png index dd4f3ce..9ade69e 100644 Binary files a/app/src/main/ic_launcher-playstore.png and b/app/src/main/ic_launcher-playstore.png differ 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 234444b..57b8ca7 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 @@ -45,6 +45,9 @@ class ListAdapter extends TaskAdapter { Intent intent = new Intent(category.getContext(), MenuActivity.class); intent.putExtra(MenuActivity.ID_EXTRA, location.id); intent.putExtra(MenuActivity.NAME_EXTRA, location.name); + intent.putExtra(MenuActivity.LATITUDE_EXTRA, location.address.lat); + intent.putExtra(MenuActivity.LONGITUDE_EXTRA, location.address.lon); + intent.putExtra(MenuActivity.STREET_EXTRA, location.address.street); category.getContext().startActivity(intent); }); } 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 9bef532..14d1a74 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 @@ -23,13 +23,13 @@ class ListTask extends Task { Info info = new Info(); connection.send(info, infoResponse -> { // Load Locations - AllLocations allLocations = new AllLocations(Constants.PLATFORM, infoResponse.site.id, true, false, true); + AllLocations allLocations = new AllLocations(Constants.PLATFORM, infoResponse.site.id, false, true); connection.send(allLocations, allLocationsResponse -> { // Success ListData data = new ListData(infoResponse.site.id); // Find Active Locations for (AllLocations.Response.Building building : allLocationsResponse.buildings) { - if (building.active) { + if (building.show_menus) { // Found Active Building Category category = new Category<>(building.name); for (AllLocations.Response.Location location : building.locations) { diff --git a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuActivity.java b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuActivity.java index cf74b94..f3677e8 100644 --- a/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuActivity.java +++ b/app/src/main/java/com/thebrokenrail/mtudining/activity/menu/MenuActivity.java @@ -1,6 +1,9 @@ package com.thebrokenrail.mtudining.activity.menu; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; +import android.view.Menu; import android.view.MenuItem; import androidx.activity.EdgeToEdge; @@ -15,6 +18,9 @@ import com.google.android.material.appbar.MaterialToolbar; import com.thebrokenrail.mtudining.R; import com.thebrokenrail.mtudining.util.EdgeToEdgeUtil; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.Objects; @@ -24,10 +30,17 @@ import java.util.Objects; public class MenuActivity extends AppCompatActivity { public static final String NAME_EXTRA = "mtu_name"; public static final String ID_EXTRA = "mtu_id"; + public static final String LATITUDE_EXTRA = "mtu_lat"; + public static final String LONGITUDE_EXTRA = "lon_lat"; + public static final String STREET_EXTRA = "lon_lat"; private MenuViewModel viewModel; private MenuAdapter adapter; + private double latitude; + private double longitude; + private String street; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -51,6 +64,9 @@ public class MenuActivity extends AppCompatActivity { if (!viewModel.task.isSetup()) { viewModel.task.setup(id, new Date()); } + latitude = getIntent().getDoubleExtra(LATITUDE_EXTRA, 0); + longitude = getIntent().getDoubleExtra(LONGITUDE_EXTRA, 0); + street = getIntent().getStringExtra(STREET_EXTRA); // Setup RecyclerView adapter = new MenuAdapter(viewModel.task); @@ -75,6 +91,18 @@ public class MenuActivity extends AppCompatActivity { if (item.getItemId() == android.R.id.home) { getOnBackPressedDispatcher().onBackPressed(); return true; + } else if (item.getItemId() == R.id.menu_map) { + // Open Map + String encodedStreet; + try { + encodedStreet = URLEncoder.encode(street, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + Uri gmmIntentUri = Uri.parse("geo:" + latitude + ',' + longitude + "?q=" + encodedStreet); + Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); + startActivity(mapIntent); + return true; } else { return super.onOptionsItemSelected(item); } @@ -88,4 +116,10 @@ public class MenuActivity extends AppCompatActivity { viewModel.task.setup(null, newDate); viewModel.task.start(); } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.menu_toolbar, menu); + return true; + } } 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 4fbb054..99400b2 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 @@ -8,21 +8,26 @@ import java.util.List; public class AllLocations implements Method { private final int platform; private final String siteId; - private final boolean forMenus; private final boolean withAddress; private final boolean withBuildings; - public AllLocations(int platform, String siteId, boolean forMenus, boolean withAddress, boolean withBuildings) { + // These values slightly change what type of date is returned. + // for_menus=true includes some locations that for_map=true does not. + // While for_map=true includes location data, which for_menus=true does not. + // However, none of the for_menus=true locations actually have any menus. + private static final boolean FOR_MENUS = false; + private static final boolean FOR_MAP = true; + + public AllLocations(int platform, String siteId, boolean withAddress, boolean withBuildings) { this.platform = platform; this.siteId = siteId; - this.forMenus = forMenus; this.withAddress = withAddress; this.withBuildings = withBuildings; } @Override public String getPath() { - return "/locations/all_locations?platform=" + platform + "&site_id=" + siteId + "&for_menus=" + forMenus + "&with_address=" + withAddress + "&with_buildings=" + withBuildings; + return "/locations/all_locations?platform=" + platform + "&site_id=" + siteId + "&for_menus=" + FOR_MENUS + "&for_map=" + FOR_MAP + "&with_address=" + withAddress + "&with_buildings=" + withBuildings; } @Override @@ -34,15 +39,21 @@ public class AllLocations implements Method { public static class Building { public String id; public String name; - public boolean active; public boolean show_menus; public List locations; } public List buildings; public static class Location implements Category.Named { + public static class Address { + public double lat; + public double lon; + public String street; + } + public String id; public String name; public boolean active; + public Address address; @Override public String getName() { diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml index 8bcec68..389c7e0 100644 --- a/app/src/main/res/drawable/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -1,19 +1,14 @@ - - - - + android:viewportWidth="674.58" + android:viewportHeight="674.58"> + + diff --git a/app/src/main/res/drawable/location_on.xml b/app/src/main/res/drawable/location_on.xml new file mode 100644 index 0000000..e6dfeb4 --- /dev/null +++ b/app/src/main/res/drawable/location_on.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/menu/menu_toolbar.xml b/app/src/main/res/menu/menu_toolbar.xml new file mode 100644 index 0000000..fde6016 --- /dev/null +++ b/app/src/main/res/menu/menu_toolbar.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index 635df30..86b52ed 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index 7ca071f..af86341 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index f035f71..119d7a9 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index abed029..1ea056c 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 32ad6e2..8197d49 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index d18c073..c506a72 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp index 9ff6bef..85b425d 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index e24020a..40313dc 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index 07d5bfb..6da9e08 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index d46e7af..e924456 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fc78d4c..ce66a16 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,4 +11,5 @@ Ingredients:\u0020 Portion:\u0020 Nutrients: + Open Map \ No newline at end of file