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.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<InstanceInterface.WorkerStatsData> 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();
}
}
}

View File

@ -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<InstanceInterface.WorkerStatsData> 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();
}
}
}

View File

@ -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<InstanceInterface.WorkerStatsData> 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();
}
}
}

View File

@ -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<InstanceInterface.WorkerStatsData> 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();
}
}
}

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) {
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;