diff --git a/GuiApp/kv/createUserScreen.kv b/GuiApp/kv/createUserScreen.kv new file mode 100644 index 0000000..7afff74 --- /dev/null +++ b/GuiApp/kv/createUserScreen.kv @@ -0,0 +1,61 @@ +: + BoxLayout: + orientation: 'vertical' + padding: [100, 100, 50, 100] + spacing: 25 + size_hint: None, None + size: root.width, root.height + + Label: + text: "Create New User" + font_size: 24 + size_hint_y: None + height: 30 + + Label: + id: errorMessage + text: "" + color: 1, 0, 0, 1 + opacity: 0 + + BoxLayout: + orientation: 'vertical' + size_hint: None, None + size: 400, 200 + pos_hint: {'center_x': 0.5, 'center_y': 0.5} + padding: [20, 20, 20, 20] + spacing: 10 + + TextInput: + id: registerFirstName + hint_text: "First Name" + size_hint_y: None + height: 40 + padding: [10, 10] + + TextInput: + id: registerLastName + hint_text: "Last Name" + size_hint_y: None + height: 40 + padding: [10, 10] + + TextInput: + id: registerEmployeeID + hint_text: "Employee id, Blipp Card (Optional)" + size_hint_y: None + height: 40 + padding: [10, 10] + + BoxLayout: + orientation: 'horizontal' + size_hint_y: None + height: 40 + spacing: 20 + + Button: + text: "Register" + on_press: root.registerUser() + Button: + text: "Cancel" + on_press: root.cancel() diff --git a/GuiApp/kv/main.kv b/GuiApp/kv/main.kv index 694f360..660d34e 100644 --- a/GuiApp/kv/main.kv +++ b/GuiApp/kv/main.kv @@ -11,3 +11,4 @@ #:include kv/splashScreen.kv #:include kv/loginScreen.kv #:include kv/mainUserScreen.kv +#:include kv/createUserScreen.kv diff --git a/GuiApp/main.py b/GuiApp/main.py index fa4e4b2..cbc6ff9 100644 --- a/GuiApp/main.py +++ b/GuiApp/main.py @@ -10,6 +10,7 @@ from widgets.splashScreen import SplashScreenWidget from widgets.loginScreen import LoginScreenWidget from widgets.mainUserScreen import MainUserScreenWidget +from widgets.createUserScreen import CreateUserScreen from database import createAllTables, closeDatabase # Size of Raspberry pi touchscreen @@ -36,6 +37,8 @@ def build(self): sm.add_widget(SplashScreenWidget(name="splashScreen")) sm.add_widget(LoginScreenWidget(name="loginScreen")) sm.add_widget(MainUserScreenWidget(name="mainUserPage")) + sm.add_widget(CreateUserScreen(name="createUserScreen")) + inspector.create_inspector(Window, sm) return sm diff --git a/GuiApp/widgets/createUserScreen.py b/GuiApp/widgets/createUserScreen.py new file mode 100644 index 0000000..04ff350 --- /dev/null +++ b/GuiApp/widgets/createUserScreen.py @@ -0,0 +1,44 @@ +from kivy.uix.screenmanager import Screen + +from database import addPatron + + +class CreateUserScreen(Screen): + def __init__(self, **kwargs): + super().__init__(**kwargs) + + def registerUser(self): + """Handle the registration logic.""" + registerFirstName = self.ids.registerFirstName.text.strip() + registerLastName = self.ids.registerLastName.text.strip() + registerEmployeeID = self.ids.registerEmployeeID.text.strip() + + # Check for empty fields and show error messages + if not registerFirstName: + self.ids.errorMessage.text = "First Name cannot be empty!" + self.ids.errorMessage.opacity = 1 + elif not registerLastName: + self.ids.errorMessage.text = "Last Name cannot be empty!" + self.ids.errorMessage.opacity = 1 + else: + self.ids.errorMessage.opacity = 0 + print(f"Registering user: {registerFirstName} {registerLastName}") + if registerEmployeeID: + print(f"Employee ID: {registerEmployeeID}") + else: + print("No Employee ID provided.") + + addPatron(registerFirstName, registerLastName, registerEmployeeID) + + self.manager.current = "loginScreen" + + def cancel(self): + """Handle the cancel action.""" + + self.ids.registerFirstName.text = "" + self.ids.registerLastName.text = "" + self.ids.registerEmployeeID.text = "" + self.ids.errorMessage.text = "" + self.ids.errorMessage.opacity = 0 + + self.manager.current = "loginScreen" diff --git a/GuiApp/widgets/loginScreen.py b/GuiApp/widgets/loginScreen.py index 636d88c..d950743 100644 --- a/GuiApp/widgets/loginScreen.py +++ b/GuiApp/widgets/loginScreen.py @@ -2,7 +2,7 @@ from kivy.uix.boxlayout import BoxLayout from kivy.uix.behaviors import ButtonBehavior from kivy.uix.widget import Widget -from database import getAllPatrons, addPatron, UserData +from database import getAllPatrons, UserData class BoxLayoutButton(ButtonBehavior, BoxLayout): @@ -25,6 +25,11 @@ def __init__(self, **kwargs): super().__init__(**kwargs) self.AddUsersToLoginScreen() + def on_enter(self, *args): + self.clearUsersFromLoginScreen() + self.AddUsersToLoginScreen() + return super().on_enter(*args) + def AddUsersToLoginScreen(self): userDataList = getAllPatrons() if userDataList: @@ -42,9 +47,7 @@ def clearUsersFromLoginScreen(self): def createNewUserButtonClicked(self, *largs): print("Adding test user") - addPatron("Test", "User", 100) - self.clearUsersFromLoginScreen() - self.AddUsersToLoginScreen() + self.manager.current = "createUserScreen" def UserSelected(self, userId, *largs): mainUserPage = self.manager.get_screen("mainUserPage")