From 2abb9ca5578efa6e73d2bca8fdb7338752754ea7 Mon Sep 17 00:00:00 2001 From: Bryson Steck Date: Wed, 9 Jun 2021 22:19:58 -0600 Subject: organization --- .../wiimmfi/fragments/RoomAdapter.java | 120 +++++++++++++++++++++ .../wiimmfi/fragments/RoomFragment.java | 86 +++++++++++++++ 2 files changed, 206 insertions(+) create mode 100644 app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomAdapter.java create mode 100644 app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments/RoomFragment.java (limited to 'app/src/main/java/me/brysonsteck/wiimmfiwatcher/wiimmfi/fragments') 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{ + String display; + String playerLink; + String header; + ArrayList players; + Context context; + + public RoomAdapter (String display, String playerLink, String header, ArrayList 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 players; + RoomData roomData; + MaterialToolbar toolbar; + + public RoomFragment(String friendCode, ArrayList 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())); + + }); + } +} -- cgit v1.2.3