Telegram Q&A UI implemented.

This commit is contained in:
Asal Lotfi
2025-09-08 00:30:08 +03:30
parent 49ef2bb828
commit 1b53dff837
3 changed files with 173 additions and 3 deletions
@@ -364,10 +364,31 @@ public class SidebarMenuController {
}
}
private void openTelegramFeatures() { System.out.println("Opening Telegram Features..."); }
private void openTelegramQnA() { System.out.println("Opening Telegram Q&A..."); }
private void openTelegramFeatures() {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource(
"/org/to/telegramfinalproject/Fxml/telegram_features.fxml"));
Node featuresOverlay = loader.load();
MainController.getInstance().showOverlay(featuresOverlay);
} catch (IOException e) {
e.printStackTrace();
}
}
private void openTelegramQnA() {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource(
"/org/to/telegramfinalproject/Fxml/telegram_qna.fxml"));
Node qnaOverlay = loader.load();
MainController.getInstance().showOverlay(qnaOverlay);
} catch (IOException e) {
e.printStackTrace();
}
}
public void setUserFromSession(JSONObject user) {
if (user == null) return;
@@ -420,4 +441,4 @@ public class SidebarMenuController {
alert.showAndWait();
}
}
}
@@ -0,0 +1,41 @@
package org.to.telegramfinalproject.UI;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
public class TelegramQnAController {
@FXML private StackPane rootOverlay;
@FXML private Pane overlayBackground;
@FXML private ScrollPane qnaScroll;
@FXML private BorderPane contentCard;
@FXML
private void initialize() {
// Clicking outside closes overlay
overlayBackground.setOnMouseClicked(e ->
MainController.getInstance().closeOverlay(rootOverlay)
);
// Smooth scroll feel
qnaScroll.getStylesheets().add(getClass().getResource("/org/to/telegramfinalproject/CSS/scrollpane.css").toExternalForm());
qnaScroll.setPannable(true);
qnaScroll.setFitToWidth(true);
qnaScroll.setFitToHeight(false);
qnaScroll.getContent().setOnScroll(event -> {
double deltaY = event.getDeltaY() * 0.003;
qnaScroll.setVvalue(qnaScroll.getVvalue() - deltaY);
});
// Register scene for ThemeManager → stylesheet swap will handle colors/icons
Platform.runLater(() -> {
if (contentCard.getScene() != null) {
ThemeManager.getInstance().registerScene(contentCard.getScene());
}
});
}
}