From 8bc3fe4cfc4ed85d4a51727a36f6eb18f79cd656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20S=C3=A1nchez?= Date: Mon, 10 Mar 2025 12:07:21 -0300 Subject: [PATCH] Skeleton EarnerCardAdapter --- .../ui/earners/EarnerCardAdapter.java | 95 +++++++++++++++++++ app/src/main/res/layout/earner_card.xml | 2 +- 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/dcav2gui/ui/earners/EarnerCardAdapter.java b/app/src/main/java/com/example/dcav2gui/ui/earners/EarnerCardAdapter.java index 4bb0005..b867a41 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/earners/EarnerCardAdapter.java +++ b/app/src/main/java/com/example/dcav2gui/ui/earners/EarnerCardAdapter.java @@ -1,4 +1,99 @@ package com.example.dcav2gui.ui.earners; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.example.dcav2gui.InstanceInterface; +import com.example.dcav2gui.R; + +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + public class EarnerCardAdapter { + + private final ViewGroup container; + + public EarnerCardAdapter(ViewGroup container) { + this.container = container; + } + + public void updateData(List earnerDataList) { + container.removeAllViews(); // Clear existing views + for (EarnerData earner : earnerDataList) { + View cardView = LayoutInflater.from(container.getContext()).inflate(R.layout.earner_card, container, false); + addCard(earner, cardView); + container.addView(cardView); + } + } + + + public interface OnCardLongClickListener { + void onCardLongClick(String pair, View v); + } + + private EarnerCardAdapter.OnCardLongClickListener onCardLongClickListener; + + public void setOnCardLongClickListener(EarnerCardAdapter.OnCardLongClickListener listener) { + this.onCardLongClickListener = listener; + } + + private void addCard(EarnerData earner, View view) { + TextView broker = view.findViewById(R.id.earnerCardExchange); + TextView tradingBalance = view.findViewById(R.id.earnerCardTradingBalanceValue); + TextView earningBalance = view.findViewById(R.id.earnerCardEarningBalanceValue); + TextView percentage = view.findViewById(R.id.earnerCardPercentage); + TextView lastSubscription = view.findViewById(R.id.earnerCardLastSubscriptionDateTime); + TextView lastRedemption = view.findViewById(R.id.earnerCardLastRedemptionDateTime); + LinearLayout cardLayout = view.findViewById(R.id.earnerCard); + + if (broker == null || tradingBalance == null || earningBalance == null || lastSubscription == null || + lastRedemption == null || percentage == null ||cardLayout == null) { + System.out.println("One or more views are null"); + return; + } + + /* + * Fill the data fields with the earner's values + */ + + cardLayout.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + if (onCardLongClickListener != null) { + onCardLongClickListener.onCardLongClick(earner.getBrokerName(), v); + } + return true; + } + }); + } + + + public static String formatSeconds(double seconds) { + long days = TimeUnit.SECONDS.toDays((long) seconds); + long hours = TimeUnit.SECONDS.toHours((long) seconds) % 24; + long minutes = TimeUnit.SECONDS.toMinutes((long) seconds) % 60; + long secs = (long) (seconds % 60); + + return String.format(Locale.ROOT,"%03d:%02d:%02d:%02d", days, hours, minutes, secs); + + } + + //Refactor for earners' status bar + public static void populateStatusBar(TextView statusBar, InstanceInterface.ExchangeStatsData exchangeData) { + int amountOfWorkers = exchangeData.getOnlineWorkers(); + //double lastSeen = exchangeData.getLastSeen(); + int longWorkers = exchangeData.getLongWorkers(); + int shortWorkers = exchangeData.getShortWorkers(); + int safetyOrdersSent = exchangeData.getSafetyOrdersSent(); + int maxSafetyOrders = exchangeData.getMaxSafetyOrders(); + + String percentage = String.format(Locale.ROOT, "%.2f", (double) safetyOrdersSent/maxSafetyOrders*100); + String statusBarText = amountOfWorkers + " traders online (" + longWorkers + "/" + shortWorkers + ") - Occupancy " + percentage + "%"; + statusBar.setText(statusBarText); + } + } diff --git a/app/src/main/res/layout/earner_card.xml b/app/src/main/res/layout/earner_card.xml index 97e9a33..a1ee794 100644 --- a/app/src/main/res/layout/earner_card.xml +++ b/app/src/main/res/layout/earner_card.xml @@ -7,7 +7,7 @@ android:clickable="true" android:longClickable="true">