diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java index 05ebe91..3dda295 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/BinanceFragment.java @@ -4,11 +4,13 @@ package com.example.dcav2gui.ui.exchanges; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; +import android.widget.PopupMenu; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; @@ -27,7 +29,7 @@ import java.util.Locale; import java.util.Objects; -public class BinanceFragment extends Fragment { +public class BinanceFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener { private FragmentBinanceBinding binding; private BinanceViewModel binanceViewModel; @@ -42,12 +44,12 @@ public class BinanceFragment extends Fragment { View root = binding.getRoot(); //Initialize status bar - //Maybe instead of editing the status bar, edit the appbar at mobile_navigation.xml? statusBar = root.findViewById(R.id.binance_status_bar); binanceViewModel = new ViewModelProvider(this).get(BinanceViewModel.class); workerCardAdapter = new WorkerCardAdapter(binding.binanceCardsContainer); + workerCardAdapter.setOnCardLongClickListener(this); List workerCache = MainActivity.getInstanceCache("binance").getWorkers(); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("binance")); @@ -62,4 +64,64 @@ public class BinanceFragment extends Fragment { return root; } + @Override + public void onCardLongClick(String pair, View view) { + if (view != null) { + PopupMenu popupMenu = new PopupMenu(getContext(), view); + popupMenu.getMenuInflater().inflate(R.menu.worker_popup_menu, popupMenu.getMenu()); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + if (item.getItemId() == R.id.workerMenuDetails) { + System.err.println(pair + " Details... option clicked"); + return true; + } else if (item.getItemId() == R.id.addTrader) { + System.err.println(pair + " Add trader option clicked"); + return true; + } else if (item.getItemId() == R.id.removeTrader) { + System.err.println(pair + " Remove trader option clicked"); + return true; + } else if (item.getItemId() == R.id.restartTrader) { + System.err.println(pair + " Restart option clicked"); + return true; + } else if (item.getItemId() == R.id.importTrader) { + System.err.println(pair + " Import option clicked"); + return true; + } else if (item.getItemId() == R.id.togglePause) { + System.err.println(pair + " Toggle pause option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleAutoswitch) { + System.err.println(pair + " Toggle autoswitch option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleCleanup) { + System.err.println(pair + " Toggle cleanup option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleLastCall) { + System.err.println(pair + " Toggle last call option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToLong) { + System.err.println(pair + " Switch to long option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToShort) { + System.err.println(pair + " Switch to short option clicked"); + return true; + } else if (item.getItemId() == R.id.switchQuoteCurrency) { + System.err.println(pair + " Switch quote currency option clicked"); + return true; + } else if (item.getItemId() == R.id.addSafetyOrders) { + System.err.println(pair + " Add safety orders option clicked"); + return true; + } else if (item.getItemId() == R.id.addQuote) { + System.err.println(pair + " Add quote option clicked"); + return true; + } else if (item.getItemId() == R.id.workerMenuLastCall) { + System.err.println(pair + " Worker menu last call option clicked"); + return true; + } + return false; + } + }); + popupMenu.show(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java index f9be3b6..7eb10a9 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/GateioFragment.java @@ -2,8 +2,10 @@ package com.example.dcav2gui.ui.exchanges; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.PopupMenu; import android.widget.TextView; import androidx.annotation.NonNull; @@ -19,7 +21,7 @@ import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; import java.util.List; -public class GateioFragment extends Fragment { +public class GateioFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener { private FragmentGateioBinding binding; private GateioViewModel GateioViewModel; @@ -38,6 +40,7 @@ public class GateioFragment extends Fragment { GateioViewModel = new ViewModelProvider(this).get(GateioViewModel.class); workerCardAdapter = new WorkerCardAdapter(binding.gateioCardsContainer); + workerCardAdapter.setOnCardLongClickListener(this); List workerCache = MainActivity.getInstanceCache("gateio").getWorkers(); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("gateio")); @@ -52,4 +55,66 @@ public class GateioFragment extends Fragment { return root; } + + @Override + public void onCardLongClick(String pair, View view) { + if (view != null) { + PopupMenu popupMenu = new PopupMenu(getContext(), view); + popupMenu.getMenuInflater().inflate(R.menu.worker_popup_menu, popupMenu.getMenu()); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + if (item.getItemId() == R.id.workerMenuDetails) { + System.err.println(pair + " Details... option clicked"); + return true; + } else if (item.getItemId() == R.id.addTrader) { + System.err.println(pair + " Add trader option clicked"); + return true; + } else if (item.getItemId() == R.id.removeTrader) { + System.err.println(pair + " Remove trader option clicked"); + return true; + } else if (item.getItemId() == R.id.restartTrader) { + System.err.println(pair + " Restart option clicked"); + return true; + } else if (item.getItemId() == R.id.importTrader) { + System.err.println(pair + " Import option clicked"); + return true; + } else if (item.getItemId() == R.id.togglePause) { + System.err.println(pair + " Toggle pause option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleAutoswitch) { + System.err.println(pair + " Toggle autoswitch option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleCleanup) { + System.err.println(pair + " Toggle cleanup option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleLastCall) { + System.err.println(pair + " Toggle last call option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToLong) { + System.err.println(pair + " Switch to long option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToShort) { + System.err.println(pair + " Switch to short option clicked"); + return true; + } else if (item.getItemId() == R.id.switchQuoteCurrency) { + System.err.println(pair + " Switch quote currency option clicked"); + return true; + } else if (item.getItemId() == R.id.addSafetyOrders) { + System.err.println(pair + " Add safety orders option clicked"); + return true; + } else if (item.getItemId() == R.id.addQuote) { + System.err.println(pair + " Add quote option clicked"); + return true; + } else if (item.getItemId() == R.id.workerMenuLastCall) { + System.err.println(pair + " Worker menu last call option clicked"); + return true; + } + return false; + } + }); + popupMenu.show(); + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java index d58a327..e0c028a 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/KucoinFragment.java @@ -2,8 +2,10 @@ package com.example.dcav2gui.ui.exchanges; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.PopupMenu; import android.widget.TextView; import androidx.annotation.NonNull; @@ -19,7 +21,7 @@ import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; import java.util.List; -public class KucoinFragment extends Fragment { +public class KucoinFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener { private FragmentKucoinBinding binding; private KucoinViewModel KucoinViewModel; @@ -38,6 +40,7 @@ public class KucoinFragment extends Fragment { KucoinViewModel = new ViewModelProvider(this).get(KucoinViewModel.class); workerCardAdapter = new WorkerCardAdapter(binding.kucoinCardsContainer); + workerCardAdapter.setOnCardLongClickListener(this); List workerCache = MainActivity.getInstanceCache("kucoin").getWorkers(); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("kucoin")); @@ -52,4 +55,66 @@ public class KucoinFragment extends Fragment { return root; } + + @Override + public void onCardLongClick(String pair, View view) { + if (view != null) { + PopupMenu popupMenu = new PopupMenu(getContext(), view); + popupMenu.getMenuInflater().inflate(R.menu.worker_popup_menu, popupMenu.getMenu()); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + if (item.getItemId() == R.id.workerMenuDetails) { + System.err.println(pair + " Details... option clicked"); + return true; + } else if (item.getItemId() == R.id.addTrader) { + System.err.println(pair + " Add trader option clicked"); + return true; + } else if (item.getItemId() == R.id.removeTrader) { + System.err.println(pair + " Remove trader option clicked"); + return true; + } else if (item.getItemId() == R.id.restartTrader) { + System.err.println(pair + " Restart option clicked"); + return true; + } else if (item.getItemId() == R.id.importTrader) { + System.err.println(pair + " Import option clicked"); + return true; + } else if (item.getItemId() == R.id.togglePause) { + System.err.println(pair + " Toggle pause option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleAutoswitch) { + System.err.println(pair + " Toggle autoswitch option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleCleanup) { + System.err.println(pair + " Toggle cleanup option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleLastCall) { + System.err.println(pair + " Toggle last call option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToLong) { + System.err.println(pair + " Switch to long option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToShort) { + System.err.println(pair + " Switch to short option clicked"); + return true; + } else if (item.getItemId() == R.id.switchQuoteCurrency) { + System.err.println(pair + " Switch quote currency option clicked"); + return true; + } else if (item.getItemId() == R.id.addSafetyOrders) { + System.err.println(pair + " Add safety orders option clicked"); + return true; + } else if (item.getItemId() == R.id.addQuote) { + System.err.println(pair + " Add quote option clicked"); + return true; + } else if (item.getItemId() == R.id.workerMenuLastCall) { + System.err.println(pair + " Worker menu last call option clicked"); + return true; + } + return false; + } + }); + popupMenu.show(); + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java index 25cfec8..adfee9f 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/OkxFragment.java @@ -2,8 +2,10 @@ package com.example.dcav2gui.ui.exchanges; import android.os.Bundle; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.PopupMenu; import android.widget.TextView; import androidx.annotation.NonNull; @@ -19,7 +21,7 @@ import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter; import java.util.List; -public class OkxFragment extends Fragment { +public class OkxFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener { private FragmentOkxBinding binding; private OkxViewModel OkxViewModel; @@ -38,6 +40,7 @@ public class OkxFragment extends Fragment { OkxViewModel = new ViewModelProvider(this).get(OkxViewModel.class); workerCardAdapter = new WorkerCardAdapter(binding.okexCardsContainer); + workerCardAdapter.setOnCardLongClickListener(this); List workerCache = MainActivity.getInstanceCache("okx").getWorkers(); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("okx")); @@ -52,4 +55,66 @@ public class OkxFragment extends Fragment { return root; } + + @Override + public void onCardLongClick(String pair, View view) { + if (view != null) { + PopupMenu popupMenu = new PopupMenu(getContext(), view); + popupMenu.getMenuInflater().inflate(R.menu.worker_popup_menu, popupMenu.getMenu()); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + if (item.getItemId() == R.id.workerMenuDetails) { + System.err.println(pair + " Details... option clicked"); + return true; + } else if (item.getItemId() == R.id.addTrader) { + System.err.println(pair + " Add trader option clicked"); + return true; + } else if (item.getItemId() == R.id.removeTrader) { + System.err.println(pair + " Remove trader option clicked"); + return true; + } else if (item.getItemId() == R.id.restartTrader) { + System.err.println(pair + " Restart option clicked"); + return true; + } else if (item.getItemId() == R.id.importTrader) { + System.err.println(pair + " Import option clicked"); + return true; + } else if (item.getItemId() == R.id.togglePause) { + System.err.println(pair + " Toggle pause option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleAutoswitch) { + System.err.println(pair + " Toggle autoswitch option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleCleanup) { + System.err.println(pair + " Toggle cleanup option clicked"); + return true; + } else if (item.getItemId() == R.id.toggleLastCall) { + System.err.println(pair + " Toggle last call option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToLong) { + System.err.println(pair + " Switch to long option clicked"); + return true; + } else if (item.getItemId() == R.id.switchToShort) { + System.err.println(pair + " Switch to short option clicked"); + return true; + } else if (item.getItemId() == R.id.switchQuoteCurrency) { + System.err.println(pair + " Switch quote currency option clicked"); + return true; + } else if (item.getItemId() == R.id.addSafetyOrders) { + System.err.println(pair + " Add safety orders option clicked"); + return true; + } else if (item.getItemId() == R.id.addQuote) { + System.err.println(pair + " Add quote option clicked"); + return true; + } else if (item.getItemId() == R.id.workerMenuLastCall) { + System.err.println(pair + " Worker menu last call option clicked"); + return true; + } + return false; + } + }); + popupMenu.show(); + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java b/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java index 21ca564..34d00ea 100644 --- a/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java +++ b/app/src/main/java/com/example/dcav2gui/ui/exchanges/adapters/WorkerCardAdapter.java @@ -42,6 +42,19 @@ public class WorkerCardAdapter{ } } + + public interface OnCardLongClickListener { + void onCardLongClick(String pair, View v); + } + + private OnCardLongClickListener onCardLongClickListener; + + public void setOnCardLongClickListener(OnCardLongClickListener listener) { + this.onCardLongClickListener = listener; + } + + + private void addCard(WorkerData worker, View view) { TextView pair = view.findViewById(R.id.workerCardPair); TextView safetyOrders = view.findViewById(R.id.workerCardSafetyOrders); @@ -127,71 +140,82 @@ public class WorkerCardAdapter{ workerStatusString.setText(""); } - // Add long click listener to show the popup menu cardLayout.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { - PopupMenu popupMenu = new PopupMenu(v.getContext(), v); - MenuInflater inflater = new MenuInflater(v.getContext()); - inflater.inflate(R.menu.worker_popup_menu,popupMenu.getMenu()); - popupMenu.setOnMenuItemClickListener(new android.widget.PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - if (item.getItemId() == R.id.workerMenuDetails) { - System.err.println("Details... option clicked"); - return true; - } else if (item.getItemId() == R.id.addTrader) { - System.err.println("Add trader option clicked"); - return true; - } else if (item.getItemId() == R.id.removeTrader) { - System.err.println("Remove trader option clicked"); - return true; - } else if (item.getItemId() == R.id.restartTrader) { - System.err.println("Restart option clicked"); - return true; - } else if (item.getItemId() == R.id.importTrader) { - System.err.println("Import option clicked"); - return true; - } else if (item.getItemId() == R.id.togglePause) { - System.err.println("Toggle pause option clicked"); - return true; - } else if (item.getItemId() == R.id.toggleAutoswitch) { - System.err.println("Toggle autoswitch option clicked"); - return true; - } else if (item.getItemId() == R.id.toggleCleanup) { - System.err.println("Toggle cleanup option clicked"); - return true; - } else if (item.getItemId() == R.id.toggleLastCall) { - System.err.println("Toggle last call option clicked"); - return true; - } else if (item.getItemId() == R.id.switchToLong) { - System.err.println("Switch to long option clicked"); - return true; - } else if (item.getItemId() == R.id.switchToShort) { - System.err.println("Switch to short option clicked"); - return true; - } else if (item.getItemId() == R.id.switchQuoteCurrency) { - System.err.println("Switch quote currency option clicked"); - return true; - } else if (item.getItemId() == R.id.addSafetyOrders) { - System.err.println("Add safety orders option clicked"); - return true; - } else if (item.getItemId() == R.id.addQuote) { - System.err.println("Add quote option clicked"); - return true; - } else if (item.getItemId() == R.id.workerMenuLastCall) { - System.err.println("Worker menu last call option clicked"); - return true; - } - return false; - } - }); - popupMenu.show(); - return false; + if (onCardLongClickListener != null) { + onCardLongClickListener.onCardLongClick(worker.getPair(), v); + } + return true; } }); } + // Add long click listener to show the popup menu +// cardLayout.setOnLongClickListener(new View.OnLongClickListener() { +// @Override +// public boolean onLongClick(View v) { +// PopupMenu popupMenu = new PopupMenu(v.getContext(), v); +// MenuInflater inflater = new MenuInflater(v.getContext()); +// inflater.inflate(R.menu.worker_popup_menu,popupMenu.getMenu()); +// popupMenu.setOnMenuItemClickListener(new android.widget.PopupMenu.OnMenuItemClickListener() { +// @Override +// public boolean onMenuItemClick(MenuItem item) { +// if (item.getItemId() == R.id.workerMenuDetails) { +// System.err.println("Details... option clicked"); +// return true; +// } else if (item.getItemId() == R.id.addTrader) { +// System.err.println("Add trader option clicked"); +// return true; +// } else if (item.getItemId() == R.id.removeTrader) { +// System.err.println("Remove trader option clicked"); +// return true; +// } else if (item.getItemId() == R.id.restartTrader) { +// System.err.println("Restart option clicked"); +// return true; +// } else if (item.getItemId() == R.id.importTrader) { +// System.err.println("Import option clicked"); +// return true; +// } else if (item.getItemId() == R.id.togglePause) { +// System.err.println("Toggle pause option clicked"); +// return true; +// } else if (item.getItemId() == R.id.toggleAutoswitch) { +// System.err.println("Toggle autoswitch option clicked"); +// return true; +// } else if (item.getItemId() == R.id.toggleCleanup) { +// System.err.println("Toggle cleanup option clicked"); +// return true; +// } else if (item.getItemId() == R.id.toggleLastCall) { +// System.err.println("Toggle last call option clicked"); +// return true; +// } else if (item.getItemId() == R.id.switchToLong) { +// System.err.println("Switch to long option clicked"); +// return true; +// } else if (item.getItemId() == R.id.switchToShort) { +// System.err.println("Switch to short option clicked"); +// return true; +// } else if (item.getItemId() == R.id.switchQuoteCurrency) { +// System.err.println("Switch quote currency option clicked"); +// return true; +// } else if (item.getItemId() == R.id.addSafetyOrders) { +// System.err.println("Add safety orders option clicked"); +// return true; +// } else if (item.getItemId() == R.id.addQuote) { +// System.err.println("Add quote option clicked"); +// return true; +// } else if (item.getItemId() == R.id.workerMenuLastCall) { +// System.err.println("Worker menu last call option clicked"); +// return true; +// } +// return false; +// } +// }); +// popupMenu.show(); +// return false; +// } +// }); +// } + public static String formatSeconds(double seconds) { long days = TimeUnit.SECONDS.toDays((long) seconds); long hours = TimeUnit.SECONDS.toHours((long) seconds) % 24;