From b6fb78bb7549450be7320df8cbc5a8239efdc6d3 Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Sun, 27 Dec 2020 19:44:12 +0700 Subject: [PATCH] Implemented tab switch for diff. user types --- sea_transport/adminpanel.cpp | 22 +++++++++++++++++++++- sea_transport/adminpanel.h | 7 +++++-- sea_transport/adminpanel.ui | 2 +- sea_transport/authwindow.cpp | 4 ++-- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/sea_transport/adminpanel.cpp b/sea_transport/adminpanel.cpp index 6095b12..c845cfd 100644 --- a/sea_transport/adminpanel.cpp +++ b/sea_transport/adminpanel.cpp @@ -57,7 +57,7 @@ AdminPanel::AdminPanel(QWidget *parent) : QMainWindow(parent), ui(new Ui::AdminP ui->pb_dp_edit->setEnabled(selected.length() == 1); }); - ui->tw_tabs->setCurrentIndex(0); + connect(this, &AdminPanel::user_set, this, &AdminPanel::on_user_set); } AdminPanel::~AdminPanel() { @@ -71,9 +71,29 @@ AdminPanel::~AdminPanel() { AdminPanel& AdminPanel::set_user(const user_entity &user) { this->user = user; ui->lab_user->setText(tr("Hello, **%1**").arg(user.login())); + + emit user_set(); + return *this; } +void AdminPanel::on_user_set() { + UserRole urole = this->user.role(); + switch (urole) { + case UserRole::ADMINISTRATOR: + ui->tw_tabs->setCurrentIndex(0); + break; + case UserRole::DISPATCHER: + ui->tw_tabs->setTabVisible(0, false); + ui->tw_tabs->setCurrentIndex(1); + break; + case UserRole::SKIPPER: + QMessageBox::critical(this, "Error", "You shouldn't be here!"); + close(); + break; + } +} + void AdminPanel::on_logout_requested() { this->close(); } diff --git a/sea_transport/adminpanel.h b/sea_transport/adminpanel.h index 827c4b1..d3db004 100644 --- a/sea_transport/adminpanel.h +++ b/sea_transport/adminpanel.h @@ -20,8 +20,7 @@ namespace Ui { class AdminPanel; } -class AdminPanel : public QMainWindow -{ +class AdminPanel : public QMainWindow { Q_OBJECT user_entity user; @@ -36,7 +35,11 @@ public: AdminPanel& set_user(const user_entity &user); +signals: + void user_set(); + private slots: + void on_user_set(); private: Ui::AdminPanel *ui; diff --git a/sea_transport/adminpanel.ui b/sea_transport/adminpanel.ui index e472f2f..1430a81 100644 --- a/sea_transport/adminpanel.ui +++ b/sea_transport/adminpanel.ui @@ -53,7 +53,7 @@ QTabWidget::Rounded - 2 + 0 false diff --git a/sea_transport/authwindow.cpp b/sea_transport/authwindow.cpp index 271365f..1002bdb 100644 --- a/sea_transport/authwindow.cpp +++ b/sea_transport/authwindow.cpp @@ -57,8 +57,8 @@ void AuthWindow::on_auth_requested() { ((AdminPanel*) w)->set_user(*user); } else if (user->role() == UserRole::DISPATCHER) { - // DispatcherPanel(nullptr, user).set_user(user).show(); - return; + w = new AdminPanel(nullptr); + ((AdminPanel*) w)->set_user(*user); } else if (user->role() == UserRole::SKIPPER) { // SkipperPanel(nullptr, user).set_user(user).show();