Files
StationManager/mainwindow.cpp
2026-04-05 16:14:54 +03:00

85 lines
2.7 KiB
C++

#include "mainwindow.h"
#include "routeswidget.h"
#include "ticketswidget.h"
#include "printwidget.h"
#include "userswidget.h"
#include "database.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QApplication>
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();
}