aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments')
-rw-r--r--app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomAdapter.java120
-rw-r--r--app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java86
2 files changed, 206 insertions, 0 deletions
diff --git a/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomAdapter.java b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomAdapter.java
new file mode 100644
index 0000000..2840ce6
--- /dev/null
+++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomAdapter.java
@@ -0,0 +1,120 @@
+package me.brysonsteck.wiimmfiwatcher.wiimmfi.fragments;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.graphics.Color;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.android.material.card.MaterialCardView;
+
+import java.util.ArrayList;
+
+import me.brysonsteck.wiimmfiwatcher.R;
+import me.brysonsteck.wiimmfiwatcher.wiimmfi.Player;
+
+public class RoomAdapter extends RecyclerView.Adapter<RoomAdapter.ViewHolder>{
+ String display;
+ String playerLink;
+ String header;
+ ArrayList<Player> players;
+ Context context;
+
+ public RoomAdapter (String display, String playerLink, String header, ArrayList<Player> players, Context context) {
+ this.display = display;
+ this.playerLink = playerLink;
+ this.header = header;
+ this.players = players;
+ this.context = context;
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.room_player_data_item, parent, false);
+ return new ViewHolder(view);
+ }
+
+ @SuppressLint("ResourceAsColor")
+ @Override
+ public void onBindViewHolder(@NonNull RoomAdapter.ViewHolder holder, int position) {
+ MaterialCardView cardView = holder.itemView.findViewById(R.id.player_card_view);
+ TextView rosterNumber = holder.itemView.findViewById(R.id.roster_number);
+ TextView miiName = holder.itemView.findViewById(R.id.mii_names);
+ TextView variableDisplay = holder.itemView.findViewById(R.id.variable_side_data);
+ Player currentPlayer = players.get(position);
+ LinearLayout.LayoutParams cardViewParams = new LinearLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT);
+ cardView.setLayoutParams(cardViewParams);
+ ViewGroup.MarginLayoutParams cardViewMarginParams = (ViewGroup.MarginLayoutParams) cardView.getLayoutParams();
+ cardViewMarginParams.setMargins(40,40,40,40);
+ cardView.requestLayout();
+ int nightModeFlags =
+ context.getResources().getConfiguration().uiMode &
+ Configuration.UI_MODE_NIGHT_MASK;
+ if (nightModeFlags == Configuration.UI_MODE_NIGHT_YES) {
+ // Night mode is active, we're using dark theme
+ cardView.setCardBackgroundColor(Color.parseColor("#313131"));
+ }
+ if (currentPlayer.watching) {
+ cardView.setCardBackgroundColor(Color.parseColor("#0D47A1"));
+ rosterNumber.setTextColor(Color.WHITE);
+ miiName.setTextColor(Color.WHITE);
+ variableDisplay.setTextColor(Color.WHITE);
+ }
+ rosterNumber.setText(currentPlayer.rosterNumber + ") ");
+ miiName.setText(currentPlayer.miiName);
+
+ switch (display) {
+ case "fc":
+ variableDisplay.setText(currentPlayer.friendCode);
+ break;
+ case "roles":
+ variableDisplay.setText(currentPlayer.role);
+ break;
+ case "login_regions":
+ variableDisplay.setText(currentPlayer.loginRegion);
+ break;
+ case "room_match":
+ variableDisplay.setText(currentPlayer.roomMatch);
+ break;
+ case "world":
+ variableDisplay.setText(currentPlayer.world);
+ break;
+ case "conn_fail":
+ variableDisplay.setText(currentPlayer.connFail);
+ break;
+ case "vr_br":
+ variableDisplay.setText("VR: " + currentPlayer.vr + " / BR: " + currentPlayer.br);
+ break;
+ }
+ if (position + 1 == getItemCount()) {
+ cardViewMarginParams.setMargins(40,40,40,250);
+ cardView.requestLayout();
+ }
+
+ }
+
+ @Override
+ public int getItemCount() {
+ if (players == null) {
+ return 0;
+ } else {
+ return players.size();
+ }
+ }
+
+ class ViewHolder extends RecyclerView.ViewHolder {
+ public ViewHolder(@NonNull View itemView) {
+ super(itemView);
+ }
+ }
+}
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
new file mode 100644
index 0000000..d6326f7
--- /dev/null
+++ b/app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java
@@ -0,0 +1,86 @@
+package me.brysonsteck.wiimmfiwatcher.wiimmfi.fragments;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.google.android.material.appbar.MaterialToolbar;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
+
+import java.util.ArrayList;
+
+import me.brysonsteck.wiimmfiwatcher.R;
+import me.brysonsteck.wiimmfiwatcher.wiimmfi.Player;
+import me.brysonsteck.wiimmfiwatcher.wiimmfi.RoomData;
+
+public class RoomFragment extends Fragment {
+ String display;
+ String header;
+ String playerLink;
+ ArrayList<Player> players;
+ RoomData roomData;
+ MaterialToolbar toolbar;
+
+ public RoomFragment(String friendCode, ArrayList<Player> players, String playerLink, String display, MaterialToolbar toolbar) {
+ super(R.layout.room_fragment);
+ this.roomData = new RoomData(players, friendCode);
+ new Thread(() -> {
+ this.header = roomData.getRoomHeader();
+ }).start();
+ this.display = display;
+ this.players = players;
+ this.playerLink = playerLink;
+ this.toolbar = toolbar;
+ }
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ FloatingActionButton refreshButton = view.findViewById(R.id.refresh_button);
+ TextView headerTextView = view.findViewById(R.id.room_header_text);
+ if (header == null) {
+ headerTextView.setText(R.string.header_null_error);
+ toolbar.setNavigationIcon(null);
+ }
+ if (roomData.error != null) {
+ headerTextView.setText(getResources().getString(R.string.jsoup_error, roomData.error));
+ toolbar.setNavigationIcon(null);
+ }
+ if (roomData.error == null && header != null) {
+ headerTextView.setText(header);
+ toolbar.setNavigationIcon(R.drawable.ic_baseline_menu_24);
+ }
+ 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) -> {
+ this.players.clear();
+ this.header = "";
+ this.roomData = roomData.refresh();
+ RoomData newRoomData = roomData.refresh();
+ this.players = roomData.getPlayers();
+ header = newRoomData.getRoomHeader();
+ if (header == null) {
+ headerTextView.setText(R.string.header_null_error);
+ toolbar.setNavigationIcon(null);
+ }
+ 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);
+ }
+ if (roomData.error == null && header != null) {
+ headerTextView.setText(header);
+ toolbar.setNavigationIcon(R.drawable.ic_baseline_menu_24);
+ }
+ recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+ recyclerView.setAdapter(new RoomAdapter(display, playerLink, header, players, getContext()));
+
+ });
+ }
+}