LAPTOP-T815PCOQ\25526
2024-11-19 b43897d4f69cf85a425f48df9270a289bc0a0125
SourceCode/Bond/BondEq/BondEqDlg.cpp
@@ -11,6 +11,8 @@
#include "SettingsDlg.h"
#include "UserManager.h"
#include "LoginDlg.h"
#include "ChangePasswordDlg.h"
#include "InputDialog.h"
// test
#include "AxisSettingsDlg.h"
@@ -224,10 +226,8 @@
   InitRxWindows();
   // 登录管理
   if (userManager.isLoggedIn()) {
      m_pTopToolbar->SetOperatorBtnText(userManager.getCurrentUser().c_str());
   }
   // 更新登录状态
   UpdateLoginStatus();
   return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
@@ -512,6 +512,22 @@
LRESULT CBondEqDlg::OnToolbarBtnClicked(WPARAM wParam, LPARAM lParam)
{
   int id = (int)lParam;
   if (id == IDC_BUTTON_RUN || id == IDC_BUTTON_STOP || id == IDC_BUTTON_SETTINGS)
   {
      CInputDialog inputDialog(_T("验证用户"), _T("请输入用户密码:"));
      if (inputDialog.DoModal() != IDOK) {
         AfxMessageBox(_T("取消验证!"));
         return 0;
      }
      CString inputText = inputDialog.GetInputText();
      std::string strPass = UserManager::getInstance().getCurrentPass();
      if (inputText.Compare(strPass.c_str()) != 0) {
         AfxMessageBox(_T("密码错误!"));
         return 0;
      }
   }
   if (id == IDC_BUTTON_RUN) {
      m_pTopToolbar->GetBtn(IDC_BUTTON_RUN)->EnableWindow(FALSE);
      m_pTopToolbar->GetBtn(IDC_BUTTON_STOP)->EnableWindow(TRUE);
@@ -528,24 +544,36 @@
      int menuId = (int)wParam;
      UserManager& userManager = UserManager::getInstance();
      if (menuId == 0) {
         ShowLoginDlg();
         CLoginDlg loginDlg;
         loginDlg.DoModal();
         UpdateLoginStatus();
      }
      else if (1 == menuId) {
         CChangePasswordDlg changePasswordDlg;
         if (changePasswordDlg.DoModal() == IDOK) {
         }
      }
      else if (2 == menuId) {
         CUserManagerDlg dlg;
         dlg.DoModal();
      }
      else if (3 == menuId) {
         int ret = AfxMessageBox(_T("是否切换用户?切换用户会退出当前账号!"), MB_OK | MB_ICONEXCLAMATION);
         if (ret != MB_OK) {
            return 0;
         }
         if (userManager.isLoggedIn()) {
            userManager.logout();
         }
         ShowLoginDlg();
         CLoginDlg loginDlg;
         loginDlg.DoModal();
         UpdateLoginStatus();
      }
      else if (2 == menuId) {
         // test
         CUserManagerDlg dlg;
         dlg.DoModal();
         //if (userManager.isLoggedIn()) {
         //   userManager.logout();
         //   m_pTopToolbar->SetOperatorBtnText(_T("未登录"));
         //}
      else {
         userManager.logout();
         UpdateLoginStatus();
      }
   }
@@ -618,17 +646,33 @@
   return pDlg;
}
void CBondEqDlg::ShowLoginDlg()
void CBondEqDlg::UpdateLoginStatus()
{
   CLoginDlg loginDlg;
   loginDlg.DoModal();
   HMENU hMenu = m_pTopToolbar->GetOperatorMenu();
   UserManager& userManager = UserManager::getInstance();
   if (userManager.isLoggedIn())
   {
      ::EnableMenuItem(hMenu, ID_OPEATOR_LOGIN, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
      ::EnableMenuItem(hMenu, ID_OPERATOR_CHANGE_PASSWORD, MF_BYCOMMAND | MF_ENABLED);
      ::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_ENABLED);
      ::EnableMenuItem(hMenu, ID_OPERATOR_LOGOUT, MF_BYCOMMAND | MF_ENABLED);
      if (userManager.getCurrentUserRole() == UserRole::SuperAdmin) {
         ::EnableMenuItem(hMenu, ID_OPEATOR_USER_MANAGER, MF_BYCOMMAND | MF_ENABLED);
      }
      else {
         ::EnableMenuItem(hMenu, ID_OPEATOR_USER_MANAGER, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
      }
      m_pTopToolbar->SetOperatorBtnText(userManager.getCurrentUser().c_str());
   }
   else {
      ::EnableMenuItem(hMenu, ID_OPEATOR_LOGIN, MF_BYCOMMAND | MF_ENABLED);
      ::EnableMenuItem(hMenu, ID_OPERATOR_CHANGE_PASSWORD, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
      ::EnableMenuItem(hMenu, ID_OPEATOR_USER_MANAGER, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
      ::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
      ::EnableMenuItem(hMenu, ID_OPERATOR_LOGOUT, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
      m_pTopToolbar->SetOperatorBtnText(_T("未登录"));
   }
}