Trader popup menus structure done

This commit is contained in:
Nicolás Sánchez 2024-12-19 09:05:31 -03:00
parent a74b8c3493
commit 6765549d5b
5 changed files with 344 additions and 63 deletions

View File

@ -4,11 +4,13 @@ package com.example.dcav2gui.ui.exchanges;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import android.widget.PopupMenu;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
@ -27,7 +29,7 @@ import java.util.Locale;
import java.util.Objects; import java.util.Objects;
public class BinanceFragment extends Fragment { public class BinanceFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener {
private FragmentBinanceBinding binding; private FragmentBinanceBinding binding;
private BinanceViewModel binanceViewModel; private BinanceViewModel binanceViewModel;
@ -42,12 +44,12 @@ public class BinanceFragment extends Fragment {
View root = binding.getRoot(); View root = binding.getRoot();
//Initialize status bar //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); statusBar = root.findViewById(R.id.binance_status_bar);
binanceViewModel = new ViewModelProvider(this).get(BinanceViewModel.class); binanceViewModel = new ViewModelProvider(this).get(BinanceViewModel.class);
workerCardAdapter = new WorkerCardAdapter(binding.binanceCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.binanceCardsContainer);
workerCardAdapter.setOnCardLongClickListener(this);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("binance").getWorkers(); List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("binance").getWorkers();
WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("binance")); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("binance"));
@ -62,4 +64,64 @@ public class BinanceFragment extends Fragment {
return root; 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();
}
}
} }

View File

@ -2,8 +2,10 @@ package com.example.dcav2gui.ui.exchanges;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -19,7 +21,7 @@ import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter;
import java.util.List; import java.util.List;
public class GateioFragment extends Fragment { public class GateioFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener {
private FragmentGateioBinding binding; private FragmentGateioBinding binding;
private GateioViewModel GateioViewModel; private GateioViewModel GateioViewModel;
@ -38,6 +40,7 @@ public class GateioFragment extends Fragment {
GateioViewModel = new ViewModelProvider(this).get(GateioViewModel.class); GateioViewModel = new ViewModelProvider(this).get(GateioViewModel.class);
workerCardAdapter = new WorkerCardAdapter(binding.gateioCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.gateioCardsContainer);
workerCardAdapter.setOnCardLongClickListener(this);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("gateio").getWorkers(); List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("gateio").getWorkers();
WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("gateio")); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("gateio"));
@ -52,4 +55,66 @@ public class GateioFragment extends Fragment {
return root; 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();
}
}
} }

View File

@ -2,8 +2,10 @@ package com.example.dcav2gui.ui.exchanges;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -19,7 +21,7 @@ import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter;
import java.util.List; import java.util.List;
public class KucoinFragment extends Fragment { public class KucoinFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener {
private FragmentKucoinBinding binding; private FragmentKucoinBinding binding;
private KucoinViewModel KucoinViewModel; private KucoinViewModel KucoinViewModel;
@ -38,6 +40,7 @@ public class KucoinFragment extends Fragment {
KucoinViewModel = new ViewModelProvider(this).get(KucoinViewModel.class); KucoinViewModel = new ViewModelProvider(this).get(KucoinViewModel.class);
workerCardAdapter = new WorkerCardAdapter(binding.kucoinCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.kucoinCardsContainer);
workerCardAdapter.setOnCardLongClickListener(this);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("kucoin").getWorkers(); List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("kucoin").getWorkers();
WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("kucoin")); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("kucoin"));
@ -52,4 +55,66 @@ public class KucoinFragment extends Fragment {
return root; 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();
}
}
} }

View File

@ -2,8 +2,10 @@ package com.example.dcav2gui.ui.exchanges;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.PopupMenu;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -19,7 +21,7 @@ import com.example.dcav2gui.ui.exchanges.adapters.WorkerCardAdapter;
import java.util.List; import java.util.List;
public class OkxFragment extends Fragment { public class OkxFragment extends Fragment implements WorkerCardAdapter.OnCardLongClickListener {
private FragmentOkxBinding binding; private FragmentOkxBinding binding;
private OkxViewModel OkxViewModel; private OkxViewModel OkxViewModel;
@ -38,6 +40,7 @@ public class OkxFragment extends Fragment {
OkxViewModel = new ViewModelProvider(this).get(OkxViewModel.class); OkxViewModel = new ViewModelProvider(this).get(OkxViewModel.class);
workerCardAdapter = new WorkerCardAdapter(binding.okexCardsContainer); workerCardAdapter = new WorkerCardAdapter(binding.okexCardsContainer);
workerCardAdapter.setOnCardLongClickListener(this);
List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("okx").getWorkers(); List<InstanceInterface.WorkerStatsData> workerCache = MainActivity.getInstanceCache("okx").getWorkers();
WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("okx")); WorkerCardAdapter.populateStatusBar(statusBar, MainActivity.getInstanceCache("okx"));
@ -52,4 +55,66 @@ public class OkxFragment extends Fragment {
return root; 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();
}
}
} }

View File

@ -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) { private void addCard(WorkerData worker, View view) {
TextView pair = view.findViewById(R.id.workerCardPair); TextView pair = view.findViewById(R.id.workerCardPair);
TextView safetyOrders = view.findViewById(R.id.workerCardSafetyOrders); TextView safetyOrders = view.findViewById(R.id.workerCardSafetyOrders);
@ -127,71 +140,82 @@ public class WorkerCardAdapter{
workerStatusString.setText(""); workerStatusString.setText("");
} }
// Add long click listener to show the popup menu
cardLayout.setOnLongClickListener(new View.OnLongClickListener() { cardLayout.setOnLongClickListener(new View.OnLongClickListener() {
@Override @Override
public boolean onLongClick(View v) { public boolean onLongClick(View v) {
PopupMenu popupMenu = new PopupMenu(v.getContext(), v); if (onCardLongClickListener != null) {
MenuInflater inflater = new MenuInflater(v.getContext()); onCardLongClickListener.onCardLongClick(worker.getPair(), v);
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; return true;
}
});
popupMenu.show();
return false;
} }
}); });
} }
// 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) { public static String formatSeconds(double seconds) {
long days = TimeUnit.SECONDS.toDays((long) seconds); long days = TimeUnit.SECONDS.toDays((long) seconds);
long hours = TimeUnit.SECONDS.toHours((long) seconds) % 24; long hours = TimeUnit.SECONDS.toHours((long) seconds) % 24;