OriginalWnd.cpp 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. #include "OriginalWnd.h"
  2. #include "Login.h"
  3. #include "ui_OriginalWnd.h"
  4. #include "OriginalWnd/ChartsAndCamerasWnd.h"
  5. #include "OriginalWnd/MainAndSecondaryCamerasWnd.h"
  6. #include "OriginalWnd/SingleCameraOperationWnd.h"
  7. #include "OriginalWnd/DbTreeViewManager.h"
  8. #include "Src/Sql/SqlOperation.h"
  9. #include <QDebug>
  10. #include <QJsonDocument>
  11. #include <QFile>
  12. #include <QFileDialog>
  13. #include <QDateTime>
  14. #include <QTimer>
  15. #include <QSettings>
  16. #include <QMouseEvent>
  17. #include <QDir>
  18. OriginalWnd::OriginalWnd(QWidget* parent, CameraBind* pCameraBind)
  19. : QMainWindow(parent)
  20. , ui(new Ui::OriginalWnd)
  21. {
  22. ui->setupUi(this);
  23. m_pCameraBind.reset(pCameraBind);
  24. m_pCameraDistribute = CameraDistribute::GetInstance();
  25. RegFun();
  26. if (gen_if.getLanguageValue() == 0)//TODO: 这里有问题吧.... ==-1 也加载?
  27. {
  28. }
  29. else
  30. {
  31. setChineseMode(this);
  32. }
  33. InitForm();
  34. }
  35. OriginalWnd::~OriginalWnd()
  36. {
  37. Del();
  38. delete ui;
  39. }
  40. void OriginalWnd::CameraBindInit(CameraBind* pCameraBind)
  41. {
  42. m_pCameraBind.reset(pCameraBind);
  43. }
  44. void OriginalWnd::RegFun()
  45. {
  46. qRegisterMetaType<CAxis::AXIS_TYPE>("CAxis::AXIS_TYPE");
  47. qRegisterMetaType<ns_module::ST_BUTTON_FUN>("ns_module::ST_BUTTON_FUN");
  48. }
  49. QWidget* OriginalWnd::getWidgetLeft() const
  50. {
  51. return ui->widget;
  52. }
  53. void OriginalWnd::SwitchToConfig(const QString& name, int configId, int menuArrayIndex, bool isMenuArray /*= true*/)
  54. {
  55. int userPrivilege = 0x1; // 初始设为 1,后续通过登录获取
  56. m_pdbTreeViewManager->initializeTree(name, userPrivilege);
  57. m_pdbTreeViewManager->currentMenuId = configId;
  58. if (isMenuArray)
  59. {
  60. if (m_pdbTreeViewManager->menuArray[menuArrayIndex].isthird == true) {
  61. m_pdbTreeViewManager->loadpage(configId);
  62. }
  63. }
  64. }
  65. void OriginalWnd::switchToHomeConfig()
  66. {
  67. SwitchToConfig("Home", 1, 0, false);
  68. }
  69. void OriginalWnd::switchToProductionConfig()
  70. {
  71. SwitchToConfig("ProductionAssist", 2, 0);
  72. }
  73. void OriginalWnd::switchToDiagnosisConfig()
  74. {
  75. SwitchToConfig("Diagnosis", 2, 0);
  76. }
  77. void OriginalWnd::switchToDispositionConfig()
  78. {
  79. SwitchToConfig("Calibration", 6, 4);
  80. }
  81. void OriginalWnd::switchToModuleConfig()
  82. {
  83. SwitchToConfig("ModuleConfig", 4, 3);
  84. }
  85. void OriginalWnd::switchToProgramConfig()
  86. {
  87. SwitchToConfig("Programme", 5, 1);
  88. }
  89. void OriginalWnd::setChineseMode(QMainWindow* OriginalWnd)
  90. {
  91. OriginalWnd->setWindowTitle(QCoreApplication::translate("OriginalWnd", "主界面", nullptr));
  92. ui->stopButton->setText(QCoreApplication::translate("OriginalWnd", "停止", nullptr));
  93. ui->startButton->setText(QCoreApplication::translate("OriginalWnd", "启动", nullptr));
  94. ui->ChartButton->setText(QString());
  95. ui->DoubleImageButton->setText(QString());
  96. ui->SingleImageButton->setText(QString());
  97. // ui->pushButton_18->setText(QCoreApplication::translate("OriginalWnd", "PushButton", nullptr));
  98. ui->label_name->setText(QCoreApplication::translate("OriginalWnd", "姓名001", nullptr));
  99. ui->RegistrationNumber->setText(QCoreApplication::translate("OriginalWnd", "注册号码 001", nullptr));
  100. ui->CalibrationButton->setText(QCoreApplication::translate("OriginalWnd", "校准", nullptr));
  101. ui->ProductIotNumber->setText(QCoreApplication::translate("OriginalWnd", "xxx生产编号", nullptr));
  102. ui->pushButton_2->setText(QString());
  103. ui->pushButton_3->setText(QString());
  104. ui->label_time->setText(QString());
  105. ui->label_username->setText(QString());
  106. ui->label_userlogo->setText(QString());
  107. }
  108. void OriginalWnd::switchToSystemConfig()
  109. {
  110. QString name = "SystemInfor";
  111. int configId = 7; // System_config.json 对应的 ConfigId
  112. int userPrivilege = 0x1; // 初始设为 1,后续通过登录获取
  113. m_pdbTreeViewManager->initializeTree(name, userPrivilege);
  114. }
  115. void OriginalWnd::InitForm()
  116. {
  117. InitTreeViewManager();
  118. m_nTimerID = startTimer(100);
  119. m_pLogStateSidebar = new LogStateSidebar(this);
  120. m_pLogStateSidebar->move(-m_pLogStateSidebar->width(), 0);
  121. m_pLogStateSidebar->resize(m_pLogStateSidebar->width(), height());
  122. //给stopbutton加样式
  123. QString stopButton_styleSheet = "QToolButton:hover { background: #cc0000; }"
  124. "QToolButton:pressed { background: #990000; }";
  125. ui->stopButton->setStyleSheet(stopButton_styleSheet);
  126. ui->stopButton->setIcon(QIcon(":/images/light/stop.png"));
  127. ui->startButton->setIcon(QIcon(":/images/light/start.png"));
  128. ui->label_userlogo->setPixmap(QPixmap(":/images/TopStatusBar/user.png").scaled(20, 20, Qt::KeepAspectRatio));
  129. ui->label_username->setText(tr("SBT_QQ", "SBT_QQ"));
  130. ui->label_username->setStyleSheet("QLabel { color : White; }"
  131. "QLabel:hover { color : red; }");
  132. CreateSwitchMainPage();
  133. ui->label_userlogo->installEventFilter(this);
  134. ui->label_username->installEventFilter(this);
  135. // 这个地方是否也要保存切换?
  136. SwitchToConfig("Home", 1, 0, false);
  137. }
  138. void OriginalWnd::InitTreeViewManager()
  139. {
  140. m_pdbTreeViewManager.reset(new DbTreeViewManager(ui->menuFunctionsSwitchWidget, this));
  141. connect(m_pdbTreeViewManager.get(), &DbTreeViewManager::RunFunSignals, this, &OriginalWnd::JRunFunSlots);
  142. // 把TreeViewManager放到页面上
  143. QVBoxLayout* layout = new QVBoxLayout(ui->menuFunctionsSwitchWidget);
  144. layout->addWidget(m_pdbTreeViewManager.get());
  145. ui->menuFunctionsSwitchWidget->setLayout(layout);
  146. }
  147. void OriginalWnd::UpdateTime()
  148. {
  149. QDateTime currentDateTime = QDateTime::currentDateTime();
  150. QString timeStr = currentDateTime.toString("yyyy-MM-dd HH:mm:ss");
  151. ui->label_time->setText(timeStr);
  152. //// 用户也要放到注册表?
  153. //QSettings settings("YourCompany_2", "YourAppName_2");
  154. //QString userName = settings.value("userName", "???").toString();
  155. //ui->label_username->setText(userName);
  156. }
  157. void OriginalWnd::Del()
  158. {
  159. killTimer(m_nTimerID);
  160. }
  161. void OriginalWnd::RunOrStopSwitch()
  162. {
  163. // 目前样式切换需要调整
  164. if (m_isDisabled)
  165. {
  166. // 当按钮处于禁用状态时,执行停止操作并启用按钮
  167. QString styleSheet = "QToolButton { background: #4AB832; color: #FFFFFF; }"
  168. "QToolButton:hover { background: #00FF00; }";
  169. ui->startButton->setDisabled(m_isDisabled);
  170. ui->stopButton->setDisabled(!m_isDisabled);
  171. ui->startButton->setStyleSheet(styleSheet);
  172. m_pCameraBind->JRunAutoBond();
  173. }
  174. else
  175. {
  176. // 当按钮处于启用状态时,执行开始操作并禁用按钮
  177. QString styleSheet = "QToolButton:disabled { color: #808080; background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #F8FBFF, stop: 1 #E7ECF3); }";
  178. ui->startButton->setDisabled(m_isDisabled);
  179. ui->stopButton->setDisabled(!m_isDisabled);
  180. ui->stopButton->setStyleSheet(styleSheet);
  181. m_pCameraBind->JRunStop();
  182. }
  183. m_isDisabled = !m_isDisabled; // 切换状态
  184. }
  185. bool OriginalWnd::eventFilter(QObject* obj, QEvent* event)
  186. {
  187. if (obj == this->ui->label_userlogo || obj == this->ui->label_username)
  188. {
  189. //判断事件类型是否为鼠标事件
  190. if (event->type() == QEvent::MouseButtonPress)
  191. {
  192. //转换为鼠标事件
  193. QMouseEvent* mouseenevt = static_cast<QMouseEvent*>(event);
  194. //判断鼠标左键点击
  195. if (mouseenevt->button() == Qt::LeftButton)
  196. {
  197. if (QStackedWidget* parent = qobject_cast<QStackedWidget*>(this->parentWidget()))
  198. {
  199. Login* loginWnd = new Login(this);
  200. parent->addWidget(loginWnd);
  201. parent->setCurrentIndex(parent->indexOf(loginWnd));
  202. }
  203. }
  204. }
  205. }
  206. return QWidget::eventFilter(obj, event);
  207. }
  208. void OriginalWnd::timerEvent(QTimerEvent* event)
  209. {
  210. if (m_nTimerID == event->timerId())
  211. {
  212. UpdateTime();
  213. }
  214. }
  215. void OriginalWnd::resizeEvent(QResizeEvent* event)
  216. {
  217. if (m_pLogStateSidebar)
  218. {
  219. m_pLogStateSidebar->resize(m_pLogStateSidebar->width(), height());
  220. }
  221. QMainWindow::resizeEvent(event);
  222. }
  223. void OriginalWnd::on_ChartButton_clicked()
  224. {
  225. CreateSwitchMainPage(EN_WND_SWITCH::ChartsAnd);
  226. }
  227. void OriginalWnd::on_DoubleImageButton_clicked()
  228. {
  229. CreateSwitchMainPage(EN_WND_SWITCH::MainAndSecondary);
  230. }
  231. void OriginalWnd::on_SingleImageButton_clicked()
  232. {
  233. CreateSwitchMainPage(EN_WND_SWITCH::SingleCameraOperation);
  234. }
  235. void OriginalWnd::on_LogStatBut_clicked()
  236. {
  237. if (m_pLogStateSidebar->isExpanded())
  238. {
  239. m_pLogStateSidebar->HideSidebar();
  240. }
  241. else
  242. {
  243. m_pLogStateSidebar->ShowSidebar();
  244. }
  245. }
  246. void OriginalWnd::on_startButton_clicked()
  247. {
  248. RunOrStopSwitch();
  249. }
  250. void OriginalWnd::on_stopButton_clicked()
  251. {
  252. RunOrStopSwitch();
  253. }
  254. void OriginalWnd::SwitchMainPage(JOriginalMainWnd* pWnd, QToolButton* tooBut)
  255. {
  256. if (m_pCameraBind == nullptr)
  257. {
  258. RegFun();
  259. }
  260. m_pCameraBind->SetImageWnd(pWnd);
  261. pWnd->InitMainCameraBind(m_pCameraBind.get());
  262. ui->switchShowPageUI->addWidget(pWnd);
  263. ui->switchShowPageUI->setCurrentIndex(ui->switchShowPageUI->indexOf(pWnd));
  264. // ui->DoubleImageButton->setStyleSheet("background-color: #A9B4FF;");
  265. tooBut->setChecked(true);
  266. m_pJOriginalMainWnd = pWnd;
  267. }
  268. void OriginalWnd::CreateSwitchMainPage(int nlastIndex /*= -1*/)
  269. {
  270. QSettings settings("OrganizationName__", "ApplicationName__");
  271. if (nlastIndex <= 0)
  272. {
  273. nlastIndex = settings.value("lastIndex", 1).toInt();
  274. }
  275. else
  276. {
  277. settings.setValue("lastIndex", nlastIndex);
  278. }
  279. // 切换窗口
  280. switch (nlastIndex)
  281. {
  282. case EN_WND_SWITCH::ChartsAnd:
  283. {
  284. ChartsAndCamerasWnd* chartsAndCamerasWnd = new ChartsAndCamerasWnd;
  285. SwitchMainPage(chartsAndCamerasWnd, ui->ChartButton);
  286. }
  287. break;
  288. case EN_WND_SWITCH::MainAndSecondary:
  289. {
  290. MainAndSecondaryCamerasWnd* mainAndSecondaryCamerasWnd = new MainAndSecondaryCamerasWnd;
  291. SwitchMainPage(mainAndSecondaryCamerasWnd, ui->DoubleImageButton);
  292. }
  293. break;
  294. case EN_WND_SWITCH::SingleCameraOperation:
  295. {
  296. SingleCameraOperationWnd* singleCameraOperationWnd = new SingleCameraOperationWnd;
  297. SwitchMainPage(singleCameraOperationWnd, ui->SingleImageButton);
  298. }
  299. break;
  300. default:
  301. break;
  302. }
  303. }
  304. void OriginalWnd::onHandleLanguageSignal(const int& data)
  305. {
  306. if (data == 0)
  307. {
  308. ui->retranslateUi(this);
  309. }
  310. else
  311. {
  312. setChineseMode(this);
  313. }
  314. }
  315. void OriginalWnd::JRunFunSlots(ns_module::ST_BUTTON_FUN pra)
  316. {
  317. m_pCameraBind->JRunButton(pra);
  318. }