#include "mainwindow.h" #include "routeswidget.h" #include "ticketswidget.h" #include "printwidget.h" #include "userswidget.h" #include "database.h" #include #include #include #include MainWindow::MainWindow(const QString& username, const QString& role, QWidget* parent) : QMainWindow(parent), m_username(username), m_role(role) { setWindowTitle("Система учета вокзала"); setMinimumSize(900, 600); User user = Database::instance().getUser(username); m_userId = user.id; QMenuBar* menuBar = this->menuBar(); QMenu* menu = menuBar->addMenu("Меню"); QAction* routesAction = menu->addAction("Управление рейсами"); QAction* ticketsAction = menu->addAction("Продажа билетов"); QAction* printAction = menu->addAction("Печать билетов"); menu->addSeparator(); QAction* logoutAction = menu->addAction("Выйти"); connect(routesAction, &QAction::triggered, this, &MainWindow::showRoutes); connect(ticketsAction, &QAction::triggered, this, &MainWindow::showTickets); connect(printAction, &QAction::triggered, this, &MainWindow::showPrint); connect(logoutAction, &QAction::triggered, this, &MainWindow::logout); m_stack = new QStackedWidget(this); setCentralWidget(m_stack); m_routesWidget = new RoutesWidget(this); m_ticketsWidget = new TicketsWidget(this); m_printWidget = new PrintWidget(this); m_usersWidget = new UsersWidget(this); m_stack->addWidget(m_routesWidget); m_stack->addWidget(m_ticketsWidget); m_stack->addWidget(m_printWidget); m_stack->addWidget(m_usersWidget); m_statusLabel = new QLabel(QString("Пользователь: %1 | Роль: %2").arg(username, role)); statusBar()->addWidget(m_statusLabel); if (role == "admin") { QMenu* userMenu = new QMenu("Пользователи", menuBar); QAction* usersAction = menu->insertMenu(printAction, userMenu); QAction* manageUsersAction = userMenu->addAction("Управление пользователями"); connect(manageUsersAction, &QAction::triggered, this, &MainWindow::showUsers); } else { m_usersWidget->setVisible(false); } showRoutes(); } void MainWindow::showRoutes() { m_stack->setCurrentWidget(m_routesWidget); } void MainWindow::showTickets() { m_ticketsWidget->refreshRoutes(); m_stack->setCurrentWidget(m_ticketsWidget); } void MainWindow::showPrint() { m_printWidget->refreshRoutes(); m_stack->setCurrentWidget(m_printWidget); } void MainWindow::showUsers() { m_usersWidget->refreshUsers(); m_stack->setCurrentWidget(m_usersWidget); } void MainWindow::logout() { QApplication::quit(); }