configwidget.cpp 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. #include "configwidget.h"
  2. #include "ui_configwidget.h"
  3. #include <QJsonArray>
  4. #include <QJsonDocument>
  5. #include <QJsonObject>
  6. #include <QJsonParseError>
  7. #include <QStandardItem>
  8. #include <QListView>
  9. #include <QStyleFactory>
  10. #define LOCAL_TOPIC "同轴采集服务配置"
  11. ConfigWidget::ConfigWidget(int skintype, QWidget *parent) :
  12. QWidget(parent),
  13. ui(new Ui::ConfigWidget)
  14. {
  15. ui->setupUi(this);
  16. DoSetStyleSheet(skintype);
  17. QListView *view = new QListView();
  18. view->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint);
  19. view->window()->setAttribute(Qt::WA_TranslucentBackground);
  20. ui->comboBox->addItem("是");
  21. ui->comboBox->addItem("否");
  22. ui->comboBox->setStyle(QStyleFactory::create("Windows"));
  23. ui->comboBox->setView(view);
  24. ui->comboBox->installEventFilter(this);
  25. ui->comboBox->setCurrentIndex(0);
  26. QListView *view1 = new QListView();
  27. view1->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint);
  28. view1->window()->setAttribute(Qt::WA_TranslucentBackground);
  29. ui->comboBox_1->setStyle(QStyleFactory::create("Windows"));
  30. ui->comboBox_1->setView(view1);
  31. ui->comboBox_1->installEventFilter(this);
  32. QListView *view2 = new QListView();
  33. view2->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint);
  34. view2->window()->setAttribute(Qt::WA_TranslucentBackground);
  35. ui->comboBox_2->setStyle(QStyleFactory::create("Windows"));
  36. ui->comboBox_2->setView(view2);
  37. ui->comboBox_2->installEventFilter(this);
  38. QListView *view3 = new QListView();
  39. view3->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint);
  40. view3->window()->setAttribute(Qt::WA_TranslucentBackground);
  41. ui->comboBox_3->setStyle(QStyleFactory::create("Windows"));
  42. ui->comboBox_3->setView(view3);
  43. ui->comboBox_3->installEventFilter(this);
  44. QListView *view4 = new QListView();
  45. view4->window()->setWindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::NoDropShadowWindowHint);
  46. view4->window()->setAttribute(Qt::WA_TranslucentBackground);
  47. ui->comboBox_4->addItem("是");
  48. ui->comboBox_4->addItem("否");
  49. ui->comboBox_4->setStyle(QStyleFactory::create("Windows"));
  50. ui->comboBox_4->setView(view4);
  51. ui->comboBox_4->installEventFilter(this);
  52. ui->comboBox_4->setCurrentIndex(1);
  53. ui->lineEdit_monIp->setEnabled(false);
  54. ui->lineEdit_monPort->setEnabled(false);
  55. }
  56. ConfigWidget::~ConfigWidget()
  57. {
  58. delete ui;
  59. }
  60. bool ConfigWidget::eventFilter(QObject *obj, QEvent *event)
  61. {
  62. if (obj == ui->comboBox_1 ||obj == ui->comboBox_2
  63. || obj == ui->comboBox_3 || obj == ui->comboBox_4
  64. || obj == ui->comboBox)
  65. {
  66. if (event->type() == QEvent::MouseMove) { return true; }
  67. else { return false; }
  68. }
  69. else
  70. {
  71. // pass the event on to the parent class
  72. return ConfigWidget::eventFilter(obj, event);
  73. }
  74. }
  75. void ConfigWidget::DoSetStyleSheet(int nstyle)
  76. {
  77. QString strQssPath;
  78. if(nstyle == 0)
  79. {
  80. strQssPath = QString(":/light/lhcoaxialswitchsetinfo.qss");
  81. }
  82. else
  83. {
  84. strQssPath = QString(":/deep/lhcoaxialswitchsetinfo.qss");
  85. }
  86. QFile file(strQssPath);
  87. file.open(QFile::ReadOnly);
  88. QString styleSheet = QLatin1String(file.readAll());
  89. this->setStyleSheet(styleSheet);
  90. }
  91. void ConfigWidget::InitTransInfo(int nchnid, int ntype)
  92. {
  93. for(int i = 0; i < m_dataManager.m_transDataList.size(); i++)
  94. {
  95. tMPinData &mpin = m_dataManager.m_transDataList[i];
  96. if((mpin.nChnID == nchnid || mpin.nChnID == 0)
  97. && (mpin.nFlags == ntype || mpin.nFlags < 0))
  98. {
  99. if(ntype == 0)
  100. {
  101. ui->comboBox_1->addItem(mpin.strDevName, mpin.nMPID);
  102. }
  103. else if(ntype == 1)
  104. {
  105. ui->comboBox_2->addItem(mpin.strDevName, mpin.nMPID);
  106. }
  107. else if(ntype == 2)
  108. {
  109. ui->comboBox_3->addItem(mpin.strDevName, mpin.nMPID);
  110. }
  111. break;
  112. }
  113. }
  114. if(ntype == 0)
  115. {
  116. ui->comboBox_1->setCurrentIndex(0);
  117. }
  118. else if(ntype == 1)
  119. {
  120. ui->comboBox_2->setCurrentIndex(0);
  121. }
  122. else if(ntype == 2)
  123. {
  124. ui->comboBox_3->setCurrentIndex(0);
  125. }
  126. }
  127. void ConfigWidget::SetTransInfo(int nmpid, int ntype)
  128. {
  129. if(ntype == 0)
  130. {
  131. int nRow = ui->comboBox_1->findData(nmpid);
  132. nRow = nRow < 0 ? 0 : nRow;
  133. ui->comboBox_1->setCurrentIndex(nRow);
  134. }
  135. else if(ntype == 1)
  136. {
  137. int nRow = ui->comboBox_2->findData(nmpid);
  138. nRow = nRow < 0 ? 0 : nRow;
  139. ui->comboBox_2->setCurrentIndex(nRow);
  140. }
  141. else if(ntype == 2)
  142. {
  143. int nRow = ui->comboBox_3->findData(nmpid);
  144. nRow = nRow < 0 ? 0 : nRow;
  145. ui->comboBox_3->setCurrentIndex(nRow);
  146. }
  147. }
  148. bool ConfigWidget::DoSave(int serviceid)
  149. {
  150. QListWidgetItem* pItem = ui->listWidget->currentItem();
  151. if(pItem == NULL)
  152. {
  153. return false;
  154. }
  155. SaveDeviceData(pItem->data(Qt::UserRole).toInt());
  156. m_dataManager.m_transServerIP = ui->lineEdit_TransIp->text();
  157. m_dataManager.m_transServerPort = ui->lineEdit_TransPort->text().toInt();
  158. m_dataManager.DoSaveServiceConfig(serviceid);
  159. return true;
  160. }
  161. void ConfigWidget::SaveDeviceData(int nMPID)
  162. {
  163. tTZConfig tzConfig;
  164. tzConfig.enable = ui->comboBox->currentIndex() == 0 ? true : false;
  165. tzConfig.enablemutilchannel = ui->comboBox_4->currentText() == 0 ? true : false;
  166. tzConfig.mpid = nMPID;
  167. tzConfig.powerofftime = ui->lineEdit_wait->text().toInt();
  168. tzConfig.hosttransmpid = ui->comboBox_1->currentData().toInt();
  169. tzConfig.backtransmpid = ui->comboBox_2->currentData().toInt();
  170. tzConfig.emergencympid = ui->comboBox_3->currentData().toInt();
  171. tzConfig.strhosttransName = ui->comboBox_1->currentText();
  172. tzConfig.strbacktransName = ui->comboBox_2->currentText();
  173. tzConfig.stremergencyName = ui->comboBox_3->currentText();
  174. tzConfig.address = ui->lineEdit_monIp->text();
  175. tzConfig.port = ui->lineEdit_monPort->text().toInt();
  176. tzConfig.slaveid = ui->lineEdit_monAddr->text().toInt();
  177. m_dataManager.SetDeviceConfig(nMPID, tzConfig);
  178. }
  179. void ConfigWidget::GetInfoFromDb(int serviceid)
  180. {
  181. m_dataManager.DoLoadDeviceData();
  182. m_dataManager.DoLoadServiceConfig(serviceid);
  183. //更新列表
  184. for(int i = 0; i < m_dataManager.m_deviceDataList.size(); i++)
  185. {
  186. tDeviceData &devData = m_dataManager.m_deviceDataList[i];
  187. QString strText = QString("%1.%2").arg(ui->listWidget->count() + 1).arg(devData.strDevName);
  188. QListWidgetItem* item = new QListWidgetItem(strText, ui->listWidget);
  189. item->setData(Qt::UserRole, devData.nMPID);
  190. item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter);
  191. ui->listWidget->addItem(item);
  192. }
  193. ui->listWidget->setCurrentRow(0);
  194. ui->lineEdit_TransIp->setText(m_dataManager.m_transServerIP);
  195. ui->lineEdit_TransPort->setText(QString::number(m_dataManager.m_transServerPort));
  196. }
  197. void ConfigWidget::on_listWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
  198. {
  199. if(previous != NULL)
  200. {
  201. int nMPID = previous->data(Qt::UserRole).toInt();
  202. SaveDeviceData(nMPID);
  203. }
  204. if(current == NULL)
  205. {
  206. return;
  207. }
  208. qDebug() << current->text();
  209. ui->lineEdit_monIp->setText("");
  210. ui->lineEdit_monPort->setText("");
  211. ui->lineEdit_monAddr->setText("1");
  212. ui->lineEdit_wait->setText("1");
  213. ui->comboBox->setCurrentIndex(0);
  214. ui->comboBox_4->setCurrentIndex(1);
  215. ui->comboBox_1->clear();
  216. ui->comboBox_2->clear();
  217. ui->comboBox_3->clear();
  218. int nMPID = current->data(Qt::UserRole).toInt();
  219. for(int i = 0; i < m_dataManager.m_deviceDataList.size(); i++)
  220. {
  221. tDeviceData &devData = m_dataManager.m_deviceDataList[i];
  222. if(devData.nMPID == nMPID)
  223. {
  224. QString strAddress = devData.strMaddress;
  225. QStringList strList = strAddress.split(':');
  226. if(strList.size() == 2)
  227. {
  228. ui->lineEdit_monIp->setText(strList.at(0));
  229. ui->lineEdit_monPort->setText(strList.at(1));
  230. }
  231. InitTransInfo(devData.nChnID, 0);
  232. InitTransInfo(devData.nChnID, 1);
  233. InitTransInfo(devData.nChnID, 2);
  234. tTZConfig tzConfig;
  235. m_dataManager.GetDeviceConfig(nMPID, tzConfig);
  236. if(!tzConfig.isValid())
  237. {
  238. SetTransInfo(tzConfig.hosttransmpid, 0);
  239. SetTransInfo(tzConfig.backtransmpid, 1);
  240. SetTransInfo(tzConfig.emergencympid, 2);
  241. ui->lineEdit_monAddr->setText(QString::number(tzConfig.slaveid));
  242. ui->lineEdit_wait->setText(QString::number(tzConfig.powerofftime));
  243. if(tzConfig.enable)
  244. {
  245. ui->comboBox->setCurrentIndex(0);
  246. }
  247. else
  248. {
  249. ui->comboBox->setCurrentIndex(1);
  250. }
  251. if(tzConfig.enablemutilchannel)
  252. {
  253. ui->comboBox_4->setCurrentIndex(0);
  254. }
  255. else
  256. {
  257. ui->comboBox_4->setCurrentIndex(1);
  258. }
  259. }
  260. break;
  261. }
  262. }
  263. }