Files
ErhaCam/src/main/java/id/co/gtc/erhacam/PhotoRow.java
2025-04-10 16:21:56 +07:00

94 lines
3.6 KiB
Java

package id.co.gtc.erhacam;
import Config.SomeCodes;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.opencv_core.Mat;
import org.tinylog.Logger;
import java.io.File;
import java.nio.file.Path;
import static Config.SomeCodes.*;
public class PhotoRow {
@FXML
private Label datetime;
@FXML
private Label prefix;
@FXML
private HBox photos;
private final String borderstyle = "-fx-border-color: black; -fx-border-width: 1px;";
public void setDatetime(String datetime){
LabelSetText(this.datetime, datetime, borderstyle);
}
public void setPrefix(String prefix){
LabelSetText(this.prefix,prefix,borderstyle);
}
public void setPhotos(int width, int height, String... thumbnails){
photos.setSpacing(10);
for(String photopath : thumbnails){
ImageView imgview = createImageView(loadImage(photopath), width, height);
if (imgview!=null){
photos.getChildren().add(imgview);
//HBox.setMargin(imgview, new Insets(5, 5, 5, 5));
imgview.setStyle(borderstyle);
imgview.setOnMouseClicked(e->{
if (e.getClickCount()>=2){
//System.out.println("Photo path: "+photopath);
File ff = new File(photopath);
// System.out.println("Config exists : "+(config!=null));
// System.out.println("Photo directory: "+config.getPhotoDirectory());
// System.out.println("Full quality directory: "+config.getFullQualityDirectory());
// System.out.println("Full Quality Crop directory: "+config.getFullQualityCropDirectory());
// System.out.println("Reduced quality directory: "+config.getCompressedDirectory());
// System.out.println("Reduced quality crop directory: "+config.getCompressedCropDirectory());
//String hires = Path.of(config.getPhotoDirectory(), ff.getName()).toString();
String hires = Path.of(config.getFullQualityDirectory(), ff.getName()).toString();
//System.out.println("Hires: "+hires);
File hiresfile = new File(hires);
if (hiresfile.isFile()){
System.out.println("Opening file: "+hires);
SomeCodes.OpenPictureInDefaultViewer(hires);
} else ShowAlert(Alert.AlertType.ERROR, "Error", "File not found", "File not found: "+hires);
e.consume();
}
});
}
}
}
private ImageView createImageView(Image img, int width, int height){
if (img!=null){
ImageView imgview = new ImageView(img);
imgview.prefWidth(width);
imgview.prefHeight(height);
imgview.setFitHeight(height);
imgview.setFitWidth(width);
imgview.setPreserveRatio(true);
return imgview;
}
return null;
}
private Image loadImage(String photopath){
try{
Mat mat = opencv_imgcodecs.imread(photopath);
return SomeCodes.ConvertToImage(mat, 640,480);
} catch (Exception e){
Logger.error("Error loading image: " + photopath + ", Msg : " + e.getMessage());
}
return null;
}
}