summaryrefslogtreecommitdiff
path: root/src/app/mainMenuBar.py
blob: 7c05529a082232be79d5b1ac6d0a0548c1073469 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

############################################################################
#                                                                          #
# Description: Gestion du "Menu bar" menu en haut de la fenêtre            #
#                                                                          #
############################################################################

# Import de join de la bibliothèque de bas OS pour joindre plusieurs
# nom en un chemin poitnant vers un dossier ou fichier
from os.path import join
# Import de path pour récupérer le chemin actuel
from pathlib import Path
# Import des éléments de PyQt5
from PyQt5.QtGui     import QIcon
from PyQt5.QtWidgets import QAction
# Import des éléments locals
from src.app import (
    windowAPropos,  windowAdmin,
    windowUserInfo, windowMissions
)


def menu_init(mainWindow: object) -> None:
    """
    Génère le 'menu bar' de l'app en fonction de si l'utilisateur
    est connecté et de son status.
    """
    # On défini le logo de l'application
    logo: str = join("ressources", "icon.ico")
    mainWindow.setWindowIcon(QIcon(logo))
    # On défini le titre de la fenêtre
    mainWindow.setWindowTitle("Alphajob")
    # On initialise le menu de la fenêtre principale,
    # ou on l'"attrape" si il existe déja (pointeur vers ce dernier)
    menu: object = mainWindow.menuBar()
    # On le réinitialise si jamais il existait déja
    menu.clear()
    # On le repeuple avec différents menu et boutons en fonction du type de compte
    if mainWindow.userConnected and mainWindow.userStatus == "Admin":
        # Ajout d'un menu "Admin"
        menuAdmin:   object = menu.addMenu("Admin")
        # Création de 3 boutons, pour les 3 champs modifiables par l'admin
        btnEmplois:  object = QAction("Gestion des emplois", mainWindow)
        btnUsers:    object = QAction("Gestion des Utilisateurs", mainWindow)
        btnMissions: object = QAction("Gestion des missions", mainWindow)
        # On lie ces boutons a des fonctions, toujours avec un lambda pour que ces fonctions
        # ne soit pas déclencher à la'appel de la fonction menu_init
        btnEmplois.triggered.connect(lambda: windowAdmin.window_admin_emplois(mainWindow))
        btnUsers.triggered.connect(lambda: windowAdmin.window_admin_users(mainWindow))
        btnMissions.triggered.connect(lambda: windowAdmin.window_admin_missions(mainWindow))
        # On ajoute ces boutons au menu "Admin"
        menuAdmin.addAction(btnEmplois)
        menuAdmin.addAction(btnUsers)
        menuAdmin.addAction(btnMissions)
    # Si client ou pro
    elif mainWindow.userConnected and (
            mainWindow.userStatus == "Pro" or mainWindow.userStatus == "Client"):
        # Ajout d'un menu "mes infos" avec son bouton
        menuUserInfos: object = menu.addMenu("Mes infos")
        btnMesInfos:   object = QAction("Gérer ses infos", mainWindow)
        btnMesInfos.triggered.connect(lambda: windowUserInfo.window_main(mainWindow))
        menuUserInfos.addAction(btnMesInfos)
        # Ajout d'un menu "mes misisons" avec ses boutons
        menuMissions:        object = menu.addMenu("Mes missions")
        btnPendingMission:   object = QAction("Missions en attente", mainWindow)
        btnOngoignMission:   object = QAction("Missions en cours", mainWindow)
        btnCompletedMission: object = QAction("Missions en terminées", mainWindow)
        btnPendingMission.triggered.connect(lambda: windowMissions.window_main(mainWindow, "pending"))
        btnOngoignMission.triggered.connect(lambda: windowMissions.window_main(mainWindow, "ongoing"))
        btnCompletedMission.triggered.connect(lambda: windowMissions.window_main(mainWindow, "completed"))
        menuMissions.addAction(btnPendingMission)
        menuMissions.addAction(btnOngoignMission)
        menuMissions.addAction(btnCompletedMission)

    # Dans tous les cas
    # Ajout d'un menu "Options" aves son bouton
    menuOptions: object = menu.addMenu("Options")
    btnApropos:  object = QAction("A propos", mainWindow)
    btnApropos.triggered.connect(lambda: windowAPropos.window_main(mainWindow))
    menuOptions.addAction(btnApropos)