using Adw; using GLib; using Logic; using Models; namespace Feladat1.UI.MainWindow; public class MainWindow { private IUserService userService; private const string windowId = "main_window"; public Window Window; private Gtk.Button saveBtn; private const string saveBtnId = "save_btn"; private EntryRow emailField; private const string emailFieldId = "email"; private EntryRow userNameField; private const string userNameFieldId = "username"; private PasswordEntryRow passwordField; private const string passwordFieldId = "password"; private EntryRow emailLabel; private const string emailLabelId = "emailLabel"; private EntryRow usernameLabel; private const string usernameLabelId = "usernameLabel"; private PasswordEntryRow passwordLabel; private const string passwordLabelId = "passwordLabel"; public MainWindow(IUserService userService) { this.userService = userService; var builder = new Gtk.Builder("Feladat1.UI.MainWindow.MainWindow.ui.xml"); Window = builder.GetObject(windowId) as Window; if (Window == null) { throw new Exception("Failed to load embedded resource MainWindow.ui.xml"); } try { saveBtn = builder.GetObject(saveBtnId) as Gtk.Button; if (saveBtn == null) { throw new NullReferenceException(saveBtnId); } saveBtn.OnClicked += (sender, args) => Save(); emailField = builder.GetObject(emailFieldId) as EntryRow; if (emailField == null) { throw new NullReferenceException(emailFieldId); } userNameField = builder.GetObject(userNameFieldId) as EntryRow; if (userNameField == null) { throw new NullReferenceException(userNameFieldId); } passwordField = builder.GetObject(passwordFieldId) as PasswordEntryRow; if (passwordField == null) { throw new NullReferenceException(passwordFieldId); } emailLabel = builder.GetObject(emailLabelId) as EntryRow; if (emailLabel == null) { throw new NullReferenceException(emailLabelId); } usernameLabel = builder.GetObject(usernameLabelId) as EntryRow; if (usernameLabel == null) { throw new NullReferenceException(usernameLabelId); } passwordLabel = builder.GetObject(passwordLabelId) as PasswordEntryRow; if (passwordLabel == null) { throw new NullReferenceException(passwordLabelId); } } catch (NullReferenceException e) { Console.WriteLine($"Failed to load UI element with ID: {e.Message}"); Window.Close(); } } private bool ValidateFields() { if (userNameField.Text_ != string.Empty && emailField.Text_ != string.Empty && passwordField.Text_ != string.Empty) { return true; } return false; } private void Save() { if (ValidateFields()) { int returnCode = userService.Create(userNameField.GetText(), emailField.GetText(), passwordField.GetText()); if (returnCode == 0) { ToastOverlay overlay = new ToastOverlay(); overlay.SetParent(Window); Toast toast = new Toast(); toast.SetButtonLabel("New user exported successfully"); overlay.AddToast(toast); User user = userService.Read(); emailLabel.Text_ = user.Email; usernameLabel.Text_ = user.Username; passwordLabel.Text_ = user.Password; } } } }