From 09462b03015dfe298de52fb38d7ec70d705b5676 Mon Sep 17 00:00:00 2001 From: Jafea7 Date: Wed, 14 May 2025 22:39:07 +1000 Subject: [PATCH] Added more search options --- .../ctbrec/ui/menu/ModelMenuContributor.java | 66 +++++++++++++++---- 1 file changed, 55 insertions(+), 11 deletions(-) diff --git a/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java b/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java index 6fce25b2..559a0e87 100644 --- a/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java +++ b/client/src/main/java/ctbrec/ui/menu/ModelMenuContributor.java @@ -13,6 +13,7 @@ import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Node; import javafx.scene.control.ContextMenu; +import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; import javafx.scene.control.SeparatorMenuItem; import javafx.scene.control.TabPane; @@ -109,8 +110,17 @@ public class ModelMenuContributor { addOpenRecDir(menu, selectedModels); addNotes(menu, selectedModels); addPortrait(menu, selectedModels); - addOpenOnCamGirlFinder(menu, selectedModels); - addOpenOnNrToolFinder(menu, selectedModels); + menu.getItems().add(new SeparatorMenuItem()); + + // Create a submenu for the "Open On" options + Menu openOnSubMenu = new Menu("Search On ..."); + addOpenOnCamGirlFinder(openOnSubMenu, selectedModels); // https://camgirlfinder.net/models?m=everlenn + addOpenOnCamWhores(openOnSubMenu, selectedModels); // https://www.camwhores.tv/search/everlenn/ + addOpenOnMyCamGirl(openOnSubMenu, selectedModels); // https://mycamgirl.net/search?query=everlenn + addOpenOnNrToolFinder(openOnSubMenu, selectedModels); // https://nrtool.to/nrtool/search?s=everlenn + addOpenOnRecu(openOnSubMenu, selectedModels); // https://recu.me/performer/everlenn + // Add the submenu to the main menu + menu.getItems().add(openOnSubMenu); } public ModelMenuContributor afterwards(Runnable callback) { @@ -152,10 +162,8 @@ public class ModelMenuContributor { menu.getItems().add(openInBrowser); } - // CB (old): https://roomimg.stream.highwebmedia.com/ri/emiilycampbell.jpg?1745301588 - // CB (new): https://thumb.live.mmcdn.com/ri/emiilycampbell.jpg - private void addOpenOnCamGirlFinder(ContextMenu menu, List selectedModels) { - var openOnCamGirlFinder = new MenuItem("Search on CamGirlFinder"); + private void addOpenOnCamGirlFinder(Menu menu, List selectedModels) { + var openOnCamGirlFinder = new MenuItem("CamGirlFinder"); openOnCamGirlFinder.setOnAction(e -> { for (Model model : selectedModels) { String preview = model.getPreview(); @@ -171,15 +179,40 @@ public class ModelMenuContributor { menu.getItems().add(openOnCamGirlFinder); } - private void addOpenOnNrToolFinder(ContextMenu menu, List selectedModels) { - var openOnNrToolFinder = new MenuItem("Search on NRTool"); + private void addOpenOnCamWhores(Menu menu, List selectedModels) { + var openOnCamWhores = new MenuItem("CamWhores"); + openOnCamWhores.setOnAction(e -> { + for (Model model : selectedModels) { + String query = URLEncoder.encode(model.getName(), UTF_8); + DesktopIntegration.open("https://www.camwhores.tv/search/" + query + "/"); + } + }); + menu.getItems().add(openOnCamWhores); + } + + private void addOpenOnMyCamGirl(Menu menu, List selectedModels) { + var openOnMyCamGirl = new MenuItem("MyCamGirl"); + openOnMyCamGirl.setOnAction(e -> { + for (Model model : selectedModels) { + String query = URLEncoder.encode(model.getName(), UTF_8); + DesktopIntegration.open("https://mycamgirl.net/search?query=" + query); + } + }); + menu.getItems().add(openOnMyCamGirl); + } + + @SuppressWarnings("unused") // Remove when NR Tool accepts image URL and below is updated + private void addOpenOnNrToolFinder(Menu menu, List selectedModels) { + var openOnNrToolFinder = new MenuItem("NR Tool"); openOnNrToolFinder.setOnAction(e -> { for (Model model : selectedModels) { - // String preview = model.getPreview(); // Uncomment when NRTool has an image URL API - String preview = null; + String preview = model.getPreview(); + // Remove following line whenever NR Tool can accept image URLs + preview = null; if (preview != null && !preview.isEmpty()) { String query = URLEncoder.encode(preview, UTF_8); - DesktopIntegration.open("https://nrtool.to/nrtool/search?s=" + query); // Adjust whenever URL API implemented + // Adjust whenever URL API implemented + DesktopIntegration.open("https://nrtool.to/nrtool/search?s=" + query); } else { String query = URLEncoder.encode(model.getName(), UTF_8); DesktopIntegration.open("https://nrtool.to/nrtool/search?s=" + query); @@ -189,6 +222,17 @@ public class ModelMenuContributor { menu.getItems().add(openOnNrToolFinder); } + private void addOpenOnRecu(Menu menu, List selectedModels) { + var openOnRecu = new MenuItem("Recu"); + openOnRecu.setOnAction(e -> { + for (Model model : selectedModels) { + String query = URLEncoder.encode(model.getName(), UTF_8); + DesktopIntegration.open("https://recu.me/performer/" + query); + } + }); + menu.getItems().add(openOnRecu); + } + private void addCopyUrl(ContextMenu menu, List selectedModels) { if (selectedModels == null || selectedModels.isEmpty()) { return;