From b5b615d63b926e6ce8042ac82a0ce46ab38dad6d Mon Sep 17 00:00:00 2001 From: Bryson Steck Date: Sun, 15 Aug 2021 15:20:21 -0600 Subject: made class to handle changing photo, implemented updater fix --- .../brysonsteck/wiimmfiwatcher/MainActivity.java | 11 ++- .../me/brysonsteck/wiimmfiwatcher/Updater.java | 14 ++- .../wiimmfiwatcher/wiimmfi/SetImageView.java | 103 +++++++++++++++++++++ .../wiimmfiwatcher/wiimmfi/WiimmfiActivity.java | 18 ++-- .../wiimmfi/fragments/RoomFragment.java | 14 ++- app/src/main/res/drawable/globe.jpg | Bin 0 -> 27859 bytes app/src/main/res/layout/activity_main.xml | 40 ++++---- app/src/main/res/layout/activity_wiimmfi.xml | 3 +- app/src/main/res/layout/room_fragment.xml | 7 +- images/globe.jpg | Bin 0 -> 27859 bytes 10 files changed, 174 insertions(+), 36 deletions(-) create mode 100644 app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/SetImageView.java create mode 100644 app/src/main/res/drawable/globe.jpg create mode 100644 images/globe.jpg diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java index 1657e38..4e6fe30 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/MainActivity.java @@ -6,6 +6,7 @@ import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.WindowManager; +import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.room.Room; @@ -90,6 +91,7 @@ public class MainActivity extends AppCompatActivity { super.onStart(); final String[] newestRelease = {""}; final boolean[] outdated = {false}; + final boolean[] failed = {false}; Thread thread = new Thread() { public void run() { Updater updater = new Updater(); @@ -99,6 +101,10 @@ public class MainActivity extends AppCompatActivity { System.out.println("\tA newer version of Wiimmfi Watcher is available! (" + updater.getNewestRelease() + ")"); System.out.println("\tView the release notes and the source code here: " + updater.getGithubRelease()); System.out.println("\t---------------------------------------------------------------"); + } else if (updater.hasFailed()) { + System.out.println("---------------------------------------------------------------"); + System.out.println("\t\t An error has occurred while getting information from the update server."); + System.out.println("\t\t---------------------------------------------------------------"); } else { System.out.println("---------------------------------------------------------------"); System.out.println("\t\t" + updater.getNewestRelease() + " is the latest release of Wiimmfi Watcher."); @@ -106,6 +112,7 @@ public class MainActivity extends AppCompatActivity { } newestRelease[0] = updater.getNewestRelease(); outdated[0] = updater.isOutdated(); + failed[0] = updater.hasFailed(); } }; thread.start(); @@ -136,8 +143,10 @@ public class MainActivity extends AppCompatActivity { } }) .show(); + } else if (failed[0] && !shownUpdate) { + shownUpdate = true; + Toast.makeText(this, "An error occurred while checking for updates for Wiimmfi Watcher. Please try again later.", Toast.LENGTH_LONG).show(); } - } @Override diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/Updater.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/Updater.java index eb3e813..a4dd552 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/Updater.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/Updater.java @@ -15,6 +15,7 @@ public class Updater { public boolean outdated = false; public String newestRelease; public String githubRelease; + public boolean failed = false; public String playStore = "https://play.google.com/store/apps/details?id=me.brysonsteck.wiimmfiwatcher"; public Updater() { @@ -54,15 +55,22 @@ public class Updater { } public void compareRelease(String deviceRelease) { - if (!deviceRelease.equals(newestRelease)) { - outdated = true; - } + if (newestRelease == null) { + failed = true; + } + else if (!deviceRelease.equals(newestRelease)) { + outdated = true; + } } public boolean isOutdated() { return outdated; } + public boolean hasFailed() { + return failed; + } + public String getNewestRelease() { return newestRelease; } diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/SetImageView.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/SetImageView.java new file mode 100644 index 0000000..d77da38 --- /dev/null +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/SetImageView.java @@ -0,0 +1,103 @@ +package me.brysonsteck.wiimmfiwatcher.wiimmfi; + +import android.widget.ImageView; + +import me.brysonsteck.wiimmfiwatcher.R; + +public class SetImageView { + + public SetImageView(ImageView image, String header, boolean failure) { + if (failure) { + image.setImageResource(R.drawable.globe); + } else { + header = header.toLowerCase(); + if (header.contains("wii luigi circuit")) { + image.setImageResource(R.drawable.course_lc); + } else if (header.contains("wii moo moo meadows")) { + image.setImageResource(R.drawable.course_mmm); + } else if (header.contains("wii mushroom gorge")) { + image.setImageResource(R.drawable.course_mg); + } else if (header.contains("wii toad's factory")) { + image.setImageResource(R.drawable.course_tf); + } else if (header.contains("wii mario circuit")) { + image.setImageResource(R.drawable.course_mc); + } else if (header.contains("wii coconut mall")) { + image.setImageResource(R.drawable.course_cm); + } else if (header.contains("wii dk summit") || header.contains("wii dk's snowboard cross")) { + image.setImageResource(R.drawable.course_dks); + } else if (header.contains("wii wario's gold mine")) { + image.setImageResource(R.drawable.course_wgm); + } else if (header.contains("wii daisy circuit")) { + image.setImageResource(R.drawable.course_dc); + } else if (header.contains("wii koopa cape")) { + image.setImageResource(R.drawable.course_kc); + } else if (header.contains("wii maple treeway")) { + image.setImageResource(R.drawable.course_mt); + } else if (header.contains("wii grumble volcano")) { + image.setImageResource(R.drawable.course_gv); + } else if (header.contains("wii dry dry ruins")) { + image.setImageResource(R.drawable.course_ddr); + } else if (header.contains("wii moonview highway")) { + image.setImageResource(R.drawable.course_mh); + } else if (header.contains("wii bowser's castle")) { + image.setImageResource(R.drawable.course_bc); + } else if (header.contains("wii rainbow road")) { + image.setImageResource(R.drawable.course_rr); + } else if (header.contains("gcn peach beach")) { + image.setImageResource(R.drawable.course_rpb); + } else if (header.contains("ds yoshi falls")) { + image.setImageResource(R.drawable.course_ryf); + } else if (header.contains("snes ghost valley 2")) { + image.setImageResource(R.drawable.course_rgv2); + } else if (header.contains("n64 mario raceway")) { + image.setImageResource(R.drawable.course_rmr); + } else if (header.contains("n64 sherbet land")) { + image.setImageResource(R.drawable.course_rsl); + } else if (header.contains("gba shy guy beach")) { + image.setImageResource(R.drawable.course_rsgb); + } else if (header.contains("ds delfino square")) { + image.setImageResource(R.drawable.course_rds); + } else if (header.contains("gcn waluigi stadium")) { + image.setImageResource(R.drawable.course_rws); + } else if (header.contains("ds desert hills")) { + image.setImageResource(R.drawable.course_rdh); + } else if (header.contains("gba bowser's castle 3")) { + image.setImageResource(R.drawable.course_rbc3); + } else if (header.contains("n64 dk's jungle parkway")) { + image.setImageResource(R.drawable.course_rdkjp); + } else if (header.contains("gcn mario circuit")) { + image.setImageResource(R.drawable.course_rmc); + } else if (header.contains("snes mario circuit 3")) { + image.setImageResource(R.drawable.course_rmc3); + } else if (header.contains("ds peach gardens")) { + image.setImageResource(R.drawable.course_rpg); + } else if (header.contains("gcn dk mountain")) { + image.setImageResource(R.drawable.course_rdkm); + } else if (header.contains("n64 bowser's castle")) { + image.setImageResource(R.drawable.course_rbc); + } else if (header.contains("wii block plaza")) { + image.setImageResource(R.drawable.battle_bp); + } else if (header.contains("wii delfino pier")) { + image.setImageResource(R.drawable.battle_dp); + } else if (header.contains("wii funky stadium")) { + image.setImageResource(R.drawable.battle_fs); + } else if (header.contains("wii chain chomp")) { + image.setImageResource(R.drawable.battle_ccw); + } else if (header.contains("wii thwomp desert")) { + image.setImageResource(R.drawable.battle_td); + } else if (header.contains("snes battle course 4")) { + image.setImageResource(R.drawable.battle_rbc4); + } else if (header.contains("n64 skyscraper")) { + image.setImageResource(R.drawable.battle_rs); + } else if (header.contains("gba battle course 3")) { + image.setImageResource(R.drawable.battle_rbc3); + } else if (header.contains("gcn cookie land")) { + image.setImageResource(R.drawable.battle_rcl); + } else if (header.contains("ds twilight house")) { + image.setImageResource(R.drawable.battle_rth); + } else if (header.contains("last track:") && !header.contains("nintendo")) { + image.setImageResource(R.drawable.course_ctgp); + } + } + } +} diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java index 6936275..de7c97c 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/WiimmfiActivity.java @@ -5,6 +5,7 @@ import android.content.res.Configuration; import android.graphics.Color; import android.os.Bundle; import android.os.StrictMode; +import android.widget.ImageView; import androidx.appcompat.app.AppCompatActivity; import androidx.drawerlayout.widget.DrawerLayout; @@ -32,6 +33,7 @@ public class WiimmfiActivity extends AppCompatActivity { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); + ImageView image = findViewById(R.id.image); MaterialToolbar toolbar = findViewById(R.id.toolbar); DrawerLayout drawerLayout = findViewById(R.id.drawer_layout); NavigationView drawer = findViewById(R.id.navigation_view); @@ -48,7 +50,7 @@ public class WiimmfiActivity extends AppCompatActivity { if (savedInstanceState == null) { getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "fc", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "fc", toolbar, image), null) .setReorderingAllowed(true) .commit(); } @@ -61,49 +63,49 @@ public class WiimmfiActivity extends AppCompatActivity { if (menuItem.getItemId() == R.id.friend_code) { players.clear(); getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "fc", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "fc", toolbar, image), null) .setReorderingAllowed(true) .commit(); } if (menuItem.getItemId() == R.id.roles) { players.clear(); getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "roles", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "roles", toolbar, image), null) .setReorderingAllowed(true) .commit(); } if (menuItem.getItemId() == R.id.login_regions) { players.clear(); getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "login_regions", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "login_regions", toolbar, image), null) .setReorderingAllowed(true) .commit(); } if (menuItem.getItemId() == R.id.room_match) { players.clear(); getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "room_match", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "room_match", toolbar, image), null) .setReorderingAllowed(true) .commit(); } if (menuItem.getItemId() == R.id.world) { players.clear(); getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "world", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "world", toolbar, image), null) .setReorderingAllowed(true) .commit(); } if (menuItem.getItemId() == R.id.conn_fail) { players.clear(); getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "conn_fail", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "conn_fail", toolbar, image), null) .setReorderingAllowed(true) .commit(); } if (menuItem.getItemId() == R.id.vr_br) { players.clear(); getSupportFragmentManager().beginTransaction() - .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "vr_br", toolbar), null) + .replace(R.id.room_fragment, new RoomFragment(friendCode, players, playerLink[0], "vr_br", toolbar, image), null) .setReorderingAllowed(true) .commit(); } diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java index d6326f7..90c97da 100644 --- a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java +++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java @@ -2,7 +2,9 @@ package me.brysonsteck.wiimmfiwatcher.wiimmfi.fragments; import android.os.Bundle; import android.view.View; +import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -18,6 +20,7 @@ import java.util.ArrayList; import me.brysonsteck.wiimmfiwatcher.R; import me.brysonsteck.wiimmfiwatcher.wiimmfi.Player; import me.brysonsteck.wiimmfiwatcher.wiimmfi.RoomData; +import me.brysonsteck.wiimmfiwatcher.wiimmfi.SetImageView; public class RoomFragment extends Fragment { String display; @@ -26,8 +29,9 @@ public class RoomFragment extends Fragment { ArrayList players; RoomData roomData; MaterialToolbar toolbar; + ImageView image; - public RoomFragment(String friendCode, ArrayList players, String playerLink, String display, MaterialToolbar toolbar) { + public RoomFragment(String friendCode, ArrayList players, String playerLink, String display, MaterialToolbar toolbar, ImageView image) { super(R.layout.room_fragment); this.roomData = new RoomData(players, friendCode); new Thread(() -> { @@ -37,6 +41,7 @@ public class RoomFragment extends Fragment { this.players = players; this.playerLink = playerLink; this.toolbar = toolbar; + this.image = image; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { @@ -46,20 +51,24 @@ public class RoomFragment extends Fragment { if (header == null) { headerTextView.setText(R.string.header_null_error); toolbar.setNavigationIcon(null); + SetImageView setImageView = new SetImageView(image, header, true); } if (roomData.error != null) { headerTextView.setText(getResources().getString(R.string.jsoup_error, roomData.error)); toolbar.setNavigationIcon(null); + SetImageView setImageView = new SetImageView(image, header, true); } if (roomData.error == null && header != null) { headerTextView.setText(header); toolbar.setNavigationIcon(R.drawable.ic_baseline_menu_24); + SetImageView setImageView = new SetImageView(image, header, false); } RecyclerView recyclerView = view.findViewById(R.id.player_data_recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setAdapter(new RoomAdapter(display, playerLink, header, players, getContext())); refreshButton.setOnClickListener((buttonView) -> { + Toast.makeText(getContext(), "Refreshing!", Toast.LENGTH_LONG).show(); this.players.clear(); this.header = ""; this.roomData = roomData.refresh(); @@ -69,14 +78,17 @@ public class RoomFragment extends Fragment { if (header == null) { headerTextView.setText(R.string.header_null_error); toolbar.setNavigationIcon(null); + SetImageView setImageView = new SetImageView(image, header, true); } if (newRoomData.error instanceof java.net.SocketTimeoutException || newRoomData.error instanceof java.net.UnknownHostException) { headerTextView.setText(getResources().getString(R.string.jsoup_error, roomData.error)); toolbar.setNavigationIcon(null); + SetImageView setImageView = new SetImageView(image, header, true); } if (roomData.error == null && header != null) { headerTextView.setText(header); toolbar.setNavigationIcon(R.drawable.ic_baseline_menu_24); + SetImageView setImageView = new SetImageView(image, header, false); } recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); recyclerView.setAdapter(new RoomAdapter(display, playerLink, header, players, getContext())); diff --git a/app/src/main/res/drawable/globe.jpg b/app/src/main/res/drawable/globe.jpg new file mode 100644 index 0000000..0ee5e50 Binary files /dev/null and b/app/src/main/res/drawable/globe.jpg differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 863ff0c..6ee8a70 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -31,26 +31,26 @@ app:title="Wiimmfi Watcher" app:titleTextColor="@color/white" /> - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_wiimmfi.xml b/app/src/main/res/layout/activity_wiimmfi.xml index 41cf4fe..478ad10 100644 --- a/app/src/main/res/layout/activity_wiimmfi.xml +++ b/app/src/main/res/layout/activity_wiimmfi.xml @@ -26,11 +26,12 @@ app:collapsedTitleTextAppearance="@style/TextAppearance.App.CollapsingToolbar.Collapsed"> + android:src="@drawable/globe" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" />