Browse Source

V0.4
1、完成了保存和导入模板的功能
2、完成了部分换肤的功能

apple 2 months ago
parent
commit
31eee8b841
35 changed files with 1177 additions and 404 deletions
  1. 3 0
      .gitmodules
  2. 14 10
      TransmitterSwitch/AddItem/addnormalitem.cpp
  3. 13 10
      TransmitterSwitch/AddItem/addspecialitem.cpp
  4. 25 0
      TransmitterSwitch/ItemData/ItemData.cpp
  5. 2 0
      TransmitterSwitch/ItemData/ItemData.h
  6. 13 10
      TransmitterSwitch/ItemData/oneitem.cpp
  7. 126 0
      TransmitterSwitch/Resource/QSS/importtemplate_light.qss
  8. 109 0
      TransmitterSwitch/Resource/QSS/savetotemplate_light.qss
  9. 83 0
      TransmitterSwitch/Resource/QSS/warning_light.qss
  10. 3 0
      TransmitterSwitch/Resource/TransSwitch.qrc
  11. 50 29
      TransmitterSwitch/Template/importtemplate.cpp
  12. 9 1
      TransmitterSwitch/Template/importtemplate.h
  13. 1 92
      TransmitterSwitch/Template/importtemplate.ui
  14. 57 39
      TransmitterSwitch/Template/savetotemplate.cpp
  15. 21 4
      TransmitterSwitch/Template/savetotemplate.h
  16. 1 103
      TransmitterSwitch/Template/savetotemplate.ui
  17. 82 0
      TransmitterSwitch/WebAPI/FromWebAPI.cpp
  18. 9 0
      TransmitterSwitch/WebAPI/FromWebAPI.h
  19. 7 7
      TransmitterSwitch/common/date/calendarnav.cpp
  20. 4 3
      TransmitterSwitch/common/date/calendarwidgetex.cpp
  21. 10 2
      TransmitterSwitch/common/warning/warning.cpp
  22. 1 83
      TransmitterSwitch/common/warning/warning.ui
  23. 76 3
      TransmitterSwitch/transmitterswitch.cpp
  24. 4 2
      TransmitterSwitch/transmitterswitch.h
  25. 160 0
      demo/换肤/alarmrecordwidget.qss
  26. 77 0
      demo/换肤/lhstylemanager.cpp
  27. 46 0
      demo/换肤/lhstylemanager.h
  28. 8 4
      show1/CMakeLists.txt
  29. 78 0
      show1/StyleManager/lhstylemanager.cpp
  30. 0 0
      show1/StyleManager/lhstylemanager.cpp_
  31. 46 0
      show1/StyleManager/lhstylemanager.h
  32. 0 0
      show1/StyleManager/lhstylemanager.h_
  33. 35 2
      show1/widget.cpp
  34. 4 0
      show1/widget.h
  35. BIN
      归档.zip

+ 3 - 0
.gitmodules

@@ -0,0 +1,3 @@
+[submodule "External"]
+	path = External
+	url = http://112.124.51.72:10086/apple/External.git

+ 14 - 10
TransmitterSwitch/AddItem/addnormalitem.cpp

@@ -14,6 +14,8 @@
 #include "common/SelectTime/timewidget.h"
 #include "ItemData.h"
 
+#include "lhstylemanager.h"
+
 AddNormalItem::AddNormalItem(QWidget *parent) :
     QDialog(parent),
     ui(new Ui::AddNormalItem)
@@ -26,16 +28,18 @@ AddNormalItem::AddNormalItem(QWidget *parent) :
     this->setAttribute(Qt::WA_TranslucentBackground);
 
     /* 加载QSS */
-    QFile file(":/QSS/QSS/AddNormalItem_Light.qss");
-    if(file.open(QIODevice::ReadOnly))
-    {
-        QString stylesheet = file.readAll();
-        this->setStyleSheet(stylesheet);
-        file.close();
-    } else
-    {
-        LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
-    }
+    // QFile file(":/QSS/QSS/AddNormalItem_Light.qss");
+    // if(file.open(QIODevice::ReadOnly))
+    // {
+    //     QString stylesheet = file.readAll();
+    //     this->setStyleSheet(stylesheet);
+    //     file.close();
+    // } else
+    // {
+    //     LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
+    // }
+    LHStyleManager::Instance()->AddWidget(this);
+
     /* 设置comboBox阴影 */
     ui->comBox_devSelect->setViewShadowEffect();
     ui->comBox_actionSelect->setViewShadowEffect();

+ 13 - 10
TransmitterSwitch/AddItem/addspecialitem.cpp

@@ -15,6 +15,8 @@
 #include "common/date/calendardtedit.h"
 #include "ItemData.h"
 
+#include "lhstylemanager.h"
+
 AddSpecialItem::AddSpecialItem(QWidget *parent) :
     QDialog(parent),
     ui(new Ui::AddSpecialItem)
@@ -27,16 +29,17 @@ AddSpecialItem::AddSpecialItem(QWidget *parent) :
     this->setAttribute(Qt::WA_TranslucentBackground);
 
     /* 加载QSS */
-    QFile file(":/QSS/QSS/AddSpecialItem_Light.qss");
-    if(file.open(QIODevice::ReadOnly))
-    {
-        QString stylesheet = file.readAll();
-        this->setStyleSheet(stylesheet);
-        file.close();
-    } else
-    {
-        LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
-    }
+    // QFile file(":/QSS/QSS/AddSpecialItem_Light.qss");
+    // if(file.open(QIODevice::ReadOnly))
+    // {
+    //     QString stylesheet = file.readAll();
+    //     this->setStyleSheet(stylesheet);
+    //     file.close();
+    // } else
+    // {
+    //     LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
+    // }
+    LHStyleManager::Instance()->AddWidget(this);
     /* 设置comboBox阴影 */
     ui->comBox_devSelect->setViewShadowEffect();
     ui->comBox_actionSelect->setViewShadowEffect();

+ 25 - 0
TransmitterSwitch/ItemData/ItemData.cpp

@@ -134,6 +134,31 @@ QList<OneItem*>* ItemData::getOneDay(int week)
     return m_mapItem[week];
 }
 
+/* 获取一天的计划 */
+QList<ExecPlanItemInfo> ItemData::getOneDayExecPlan(int week)
+{
+    if(m_mapItem.find(week) == m_mapItem.end())
+    {
+        QList<ExecPlanItemInfo> list;
+        list.clear();
+        return list;
+    }
+    auto list = m_mapItem[week];
+    QList<ExecPlanItemInfo> list1;
+    for(const auto& it : *list)
+    {
+        ExecPlanItemInfo info;
+        info.devName = it->getDevName();
+        info.actionID = it->getActionNum();
+        info.actionName = it->getActionName();
+        info.execTime = it->getExecTime();
+        info.date = it->getDate();
+        info.WeekDay = it->getWeekDay();
+        list1.append(info);
+    }
+    return list1;
+}
+
 
 /* 新增判断是否有重复 */
 bool ItemData::judgeTimeRepetitionWithAdd(int weekDay, const QString& devName, const QTime& time)

+ 2 - 0
TransmitterSwitch/ItemData/ItemData.h

@@ -40,6 +40,8 @@ public:
     QMap<int, QList<OneItem*>*>& getMapItem() { return m_mapItem; }
     /* 获取一天的容器 */
     QList<OneItem*>* getOneDay(int week);
+    /* 获取一天的计划 */
+    QList<ExecPlanItemInfo> getOneDayExecPlan(int week);
 
     /* 新增判断是否有重复 */
     bool judgeTimeRepetitionWithAdd(int weekDay, const QString& devName, const QTime& time);

+ 13 - 10
TransmitterSwitch/ItemData/oneitem.cpp

@@ -7,6 +7,8 @@
 #include "TransmitterSwitchInfo.h"
 #include "customcombobox.h"
 
+#include "lhstylemanager.h"
+
 OneItem::OneItem(QWidget *parent, bool isSpecial) :
     QWidget(parent), m_isSpecial(isSpecial),
     ui(new Ui::OneItem)
@@ -35,16 +37,17 @@ OneItem::~OneItem()
 void OneItem::init()
 {
     /* 加载QSS */
-    QFile file(":/QSS/QSS/OneItem_dark.qss");
-    if(file.open(QIODevice::ReadOnly))
-    {
-        QString stylesheet = file.readAll();
-        this->setStyleSheet(stylesheet);
-        file.close();
-    } else
-    {
-        LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
-    }
+    // QFile file(":/QSS/QSS/OneItem_dark.qss");
+    // if(file.open(QIODevice::ReadOnly))
+    // {
+    //     QString stylesheet = file.readAll();
+    //     this->setStyleSheet(stylesheet);
+    //     file.close();
+    // } else
+    // {
+    //     LH_WRITE_ERROR(QString("打开文件失败:%1").arg(file.fileName()));
+    // }
+    LHStyleManager::Instance()->AddWidget(this);
     /* 设置背景透明 */
     this->setAttribute(Qt::WA_TranslucentBackground);
     /* 设置无边框 */

+ 126 - 0
TransmitterSwitch/Resource/QSS/importtemplate_light.qss

@@ -0,0 +1,126 @@
+QWidget
+{
+    background: #FFFFFF;
+    border-radius: 8px;
+
+    font-family: 思源黑体R;
+    font-weight: 400;
+    font-size: 14px;
+    color: #3A3F63;
+    line-height: 21px;
+    text-align: left;
+    font-style: normal;
+}
+
+QLabel#label_NC1
+{
+    font-weight: bold;
+    font-size: 18px;
+    color: #3A3F63;
+    line-height: 27px;
+    text-align: left;
+    font-style: normal;
+    text-transform: uppercase;
+}
+
+QLabel#label_NC2,QLabel#label_NC3,QLabel#label_NC4
+{
+    font-weight: 400;
+    font-size: 14px;
+    color: #5A607F;
+    line-height: 21px;
+    text-align: left;
+    font-style: normal;
+}
+
+QLabel#label_line1,QLabel#label_line2,QLabel#label_line3
+{
+    background: #E6E9F4;
+}
+QLabel#label_warning
+{
+    color:red;
+}
+
+QPushButton#pBtn_close
+{
+	border-image: url(:/ICON/ICON/Dialog_close.png);
+}
+
+QPushButton#pBtn_close:hover
+{	
+	border-image: url(:/ICON/ICON/Dialog_close2.png);
+}
+
+
+
+/********* 普通方框按钮三种状态效果 *********/
+QPushButton#pBtn_cancel
+{
+	border-radius: 16px;
+	text-align: center;
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #E6E9F4;
+    color: #3A3F63;
+}
+QPushButton#pBtn_cancel:hover
+{
+	border-radius: 16px;
+	text-align: center;
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #4458FE;
+    color: #4458FE;
+}
+
+/********* 带有底色按钮三种状态效果 *********/
+QPushButton#pBtn_ok
+{
+	border-radius: 16px;
+	text-align: center;
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
+    border-radius: 16px;
+}
+
+QPushButton#pBtn_ok:hover
+{
+	border-radius: 16px;
+	text-align: center;
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
+    border-radius: 16px;
+}
+
+/* ==========================================================
+ *  QTabelWidget
+ * ========================================================== */
+
+QTableWidget
+{
+    background: #FFFFFF;
+    padding-left: 0px;
+    border: 0px solid #E6E9F4;
+    text-align: left;
+}
+
+QTableWidget::item
+{
+    padding-left: 12px;
+    padding-right: 0px;
+    padding-top: 0px;
+    padding-bottom: 0px;
+
+    margin: 0px;
+
+    text-align: left;
+
+    border: 0px solid #E6E9F4;
+}
+
+QTableWidget::item:selected
+{
+    background: rgba(231,236,255,0.5);
+}
+

+ 109 - 0
TransmitterSwitch/Resource/QSS/savetotemplate_light.qss

@@ -0,0 +1,109 @@
+QWidget
+{
+    background: #FFFFFF;
+    border-radius: 8px;
+    font-family: 思源黑体R;
+    font-weight: 400;
+    font-size: 14px;
+    color: #3A3F63;
+    line-height: 21px;
+    text-align: left;
+    font-style: normal;
+}
+
+QLabel#label_NC1
+{
+    font-family: 思源黑体M;
+    font-weight: bold;
+    font-size: 18px;
+    color: #3A3F63;
+    line-height: 27px;
+    text-transform: uppercase;
+}
+
+QLabel#label_line
+{
+    background: #E6E9F4;
+}
+
+QLabel#label_warn
+{
+	color:red;
+}
+
+QPushButton#pBtn_close
+{
+	border-image: url(:/ICON/ICON/Dialog_close.png);
+}
+
+QPushButton#pBtn_close:hover
+{
+	border-image: url(:/ICON/ICON/Dialog_close2.png);
+}
+
+/********* 普通方框按钮三种状态效果 *********/
+QPushButton#pBtn_cancel
+{
+	border-radius: 16px;
+	text-align: center;
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #E6E9F4;
+    color: #3A3F63;
+}
+QPushButton#pBtn_cancel:hover
+{
+	border-radius: 16px;
+	text-align: center;
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #4458FE;
+    color: #4458FE;
+}
+
+/********* 带有底色按钮三种状态效果 *********/
+QPushButton#pBtn_ok
+{
+	border-radius: 16px;
+	text-align: center;
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
+    border-radius: 16px;
+}
+
+QPushButton#pBtn_ok:hover
+{
+	border-radius: 16px;
+	text-align: center;
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
+    border-radius: 16px;
+}
+
+/****************  报警红框  ****************/
+QLineEdit
+{
+    background: #FFFFFF;
+    border-radius: 4px;
+    padding-left:12px;
+	border: 1px solid #E6E9F4;
+}
+
+QLineEdit:hover
+{
+    border: 1px solid #4458FE;
+}
+
+
+QLineEdit[Warn=true]
+{
+    border: 1px solid #D21F21;
+}
+
+QLineEdit:!enabled/* 或者disable */
+{
+    background: rgba(0,0,0,0.04);
+    border: 1px solid #E6E9F4;
+}
+
+

+ 83 - 0
TransmitterSwitch/Resource/QSS/warning_light.qss

@@ -0,0 +1,83 @@
+QWidget
+{
+    background: #FFFFFF;
+    border-radius: 8px;
+    font-family: 思源黑体R;
+    font-weight: 400;
+    font-size: 18px;
+    color: #3A3F63;
+    line-height: 21px;
+    text-align: left;
+    font-style: normal;
+}
+
+QLabel#label_NC1
+{
+    font-family: 思源黑体M;
+    font-weight: bold;
+    font-size: 18px;
+    color: #3A3F63;
+    line-height: 27px;
+    text-transform: uppercase;
+}
+
+QLabel#label_line
+{
+    background: #E6E9F4;
+}
+
+QLabel#label_Warn
+{
+	font-family: 思源黑体R;
+	font-weight: 400;
+	font-size: 18px;
+	color: #3A3F63;
+	line-height: 27px;
+}
+
+QPushButton#pBtn_close{
+	border-image: url(:/ICON/ICON/Dialog_close.png);
+}
+QPushButton#pBtn_close:hover{
+	
+	border-image: url(:/ICON/ICON/Dialog_close2.png);
+}
+
+QPushButton
+{
+	background: #FFFFFF;
+	border: 1px solid #E6E9F4;
+	text-align: center;
+}
+
+
+/********* 普通方框按钮三种状态效果 *********/
+QPushButton#pBtn_cancel
+{
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #E6E9F4;
+    color: #3A3F63;
+}
+QPushButton#pBtn_cancel:hover
+{
+    background: #FFFFFF;
+    border-radius: 16px;
+    border: 1px solid #4458FE;
+    color: #4458FE;
+}
+
+/********* 带有底色按钮三种状态效果 *********/
+QPushButton#pBtn_ok
+{
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
+    border-radius: 16px;
+}
+
+QPushButton#pBtn_ok:hover
+{
+    color:white;
+    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
+    border-radius: 16px;
+}

+ 3 - 0
TransmitterSwitch/Resource/TransSwitch.qrc

@@ -4,6 +4,9 @@
         <file>QSS/AddNormalItem_Light.qss</file>
         <file>QSS/AddSpecialItem_Light.qss</file>
         <file>QSS/OneItem_dark.qss</file>
+        <file>QSS/savetotemplate_light.qss</file>
+        <file>QSS/importtemplate_light.qss</file>
+        <file>QSS/warning_light.qss</file>
     </qresource>
     <qresource prefix="/ICON">
         <file>Tip/Complete2x.png</file>

+ 50 - 29
TransmitterSwitch/Template/importtemplate.cpp

@@ -4,8 +4,10 @@
 #include <QDebug>
 #include <QPoint>
 #include <QTableWidgetItem>
+#include <QFile>
 
-#include "common/warning/warning.h"
+#include "warning/warning.h"
+#include "lhstylemanager.h"
 
 ImportTemplate::ImportTemplate(QStringList& tabList,QWidget *parent) :
     QDialog(parent),
@@ -17,30 +19,50 @@ ImportTemplate::ImportTemplate(QStringList& tabList,QWidget *parent) :
     this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
     /* 设置底层样式表 */
     this->setAttribute(Qt::WA_TranslucentBackground);
+    /* 加载QSS文件 */
+    // QFile file(":/QSS/QSS/importtemplate_light.qss");
+    // if(file.open(QFile::ReadOnly))
+    // {
+    //     QString styleSheet = file.readAll();
+    //     this->setStyleSheet(styleSheet);
+    //     file.close();
+    // }
+    LHStyleManager::Instance()->AddWidget(this);
+
 
     m_templateName.clear();
 
     /* 设置列数,列宽、列高、不可编辑、选择一行 */
     ui->tableWidget->setColumnCount(3);
-    ui->tableWidget->setColumnWidth(0,22);
-    ui->tableWidget->setColumnWidth(1,256);
-    ui->tableWidget->setColumnWidth(2,76);
-    ui->tableWidget->verticalHeader()->setDefaultSectionSize(48);           //设置行高
-    ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers);         //设置不可编辑
-    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);   //设置选中一行
-    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);  //设置只能选中一行
-    ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);    //隐藏竖滚动条
-    ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);  //隐藏横滚动条
-    ui->tableWidget->setShowGrid(false);                                    //隐藏网格线
-    ui->tableWidget->verticalHeader()->setVisible(false);                   //隐藏行号
-    ui->tableWidget->horizontalHeader()->setVisible(false);                 //隐藏列表头
-    ui->tableWidget->setFocusPolicy(Qt::NoFocus);                           //设置不显示选中后的虚线
-//    ui->tableWidget->setSortingEnabled(true);                               //开启排序功能
-    /* 设置行选中后的样式 */
-    ui->tableWidget->setStyleSheet(R"(
-        QTableWidget::item:selected{
-            background: rgba(231,236,255,0.5);
-        })");
+    //设置行高
+    ui->tableWidget->verticalHeader()->setDefaultSectionSize(48);
+    /* 设置最小列宽 */
+    ui->tableWidget->horizontalHeader()->setMinimumSectionSize(10);
+    /* 设置列宽间距 */
+    ui->tableWidget->setColumnWidth(0,46);
+    ui->tableWidget->setColumnWidth(1,272);
+    ui->tableWidget->setColumnWidth(2,60);
+    
+    //设置不可编辑
+    ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers);
+    //设置选中一行
+    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
+    //设置只能选中一行
+    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
+    //隐藏竖滚动条
+    ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    //隐藏横滚动条
+    ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    //隐藏网格线
+    ui->tableWidget->setShowGrid(false);
+    //隐藏行号
+    ui->tableWidget->verticalHeader()->setVisible(false);
+    //隐藏列表头
+    ui->tableWidget->horizontalHeader()->setVisible(false);
+    //设置不显示选中后的虚线
+    ui->tableWidget->setFocusPolicy(Qt::NoFocus);
+    //开启排序功能
+//    ui->tableWidget->setSortingEnabled(true);
 
     ui->label_warning->hide();
 
@@ -50,11 +72,11 @@ ImportTemplate::ImportTemplate(QStringList& tabList,QWidget *parent) :
     connect(ui->tableWidget,SIGNAL(cellClicked(int,int)),this,SLOT(do_seletctRow(int,int)));
 
 
-    /* 先设置表格的数 */
+    /* 先设置表格的数 */
     ui->tableWidget->setRowCount(tabList.count());
     for(int i = 0;i < tabList.count();i++)
     {
-        createRow(i,i+1,tabList.at(i));
+        createRow(i,i + 1,tabList.at(i));
     }
 
 }
@@ -73,9 +95,11 @@ void ImportTemplate::do_ok()
         ui->label_warning->show();
         return;
     }
+    m_isOk = true;
     emit signal_templateName(m_templateName);
     this->close();
 }
+
 /* 选中一行 */
 void ImportTemplate::do_seletctRow(int row, int col)
 {
@@ -88,10 +112,7 @@ void ImportTemplate::do_seletctRow(int row, int col)
         connect(&w,&Warning::signal_ok,this,[&](){
             flag = true;
         });
-//        std::shared_ptr<LHMaskWidget> mask = std::make_shared<LHMaskWidget>();
-//        mask->SetMainWidget(this);       /* 设置主窗口(被遮盖的窗口) */
-//        mask->SetTrigWidget(&w);           /* 设置触发的窗口 */
-//        mask->SetOpacity(float(0.4));
+
         w.exec();
         if(!flag)
         {
@@ -115,15 +136,15 @@ void ImportTemplate::createRow(int row,int num,const QString &text)
 {
     QTableWidgetItem* item = new QTableWidgetItem;
     item->setData(Qt::DisplayRole,num);
-    item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
+    // item->setTextAlignment(Qt::AlignVCenter);
     ui->tableWidget->setItem(row,0,item);
 
     item = new QTableWidgetItem(text);
-    item->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft);
+    // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignLeft);
     ui->tableWidget->setItem(row,1,item);
 
     item = new QTableWidgetItem("删除");
-    item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
+    // item->setTextAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
     item->setForeground(Qt::blue);
     ui->tableWidget->setItem(row,2,item);
 }

+ 9 - 1
TransmitterSwitch/Template/importtemplate.h

@@ -18,9 +18,16 @@ public:
     ~ImportTemplate();
 
     void createRow(int row,int num,const QString& text);                    /* 创建一行数据 */
+
+    /* 是否点下了OK */
+    bool isOk() const { return m_isOk; }
+    /* 获取选择的模板名称 */
+    QString getTemplateName() const { return m_templateName; }
 signals:
+    /* 选择一个模版 */
     void signal_templateName(QString name);
-    void signal_deleteTemplate(QString name);                               /* 删除一个模版 */
+    /* 删除一个模版 */
+    void signal_deleteTemplate(QString name);
 
 private slots:
     void do_ok();
@@ -29,6 +36,7 @@ private slots:
 private:
     Ui::ImportTemplate *ui;
 
+    bool m_isOk = false;                                                    /* 是否点下了OK */
     QString m_templateName;                                                 /* 模版名称 */
 };
 

+ 1 - 92
TransmitterSwitch/Template/importtemplate.ui

@@ -28,98 +28,7 @@ background:transparent;
     </rect>
    </property>
    <property name="styleSheet">
-    <string notr="true">QWidget{
-background: #FFFFFF;
-border-radius: 8px;
-
-font-family: 思源黑体R;
-font-weight: 400;
-font-size: 14px;
-color: #3A3F63;
-line-height: 21px;
-text-align: left;
-font-style: normal;
-}
-QLabel#label_NC1{
-font-weight: bold;
-font-size: 18px;
-color: #3A3F63;
-line-height: 27px;
-text-align: left;
-font-style: normal;
-text-transform: uppercase;
-}
-
-QLabel#label_NC2,QLabel#label_NC3,QLabel#label_NC4
-{
-font-weight: 400;
-font-size: 14px;
-color: #5A607F;
-line-height: 21px;
-text-align: left;
-font-style: normal;
-}
-
-QLabel#label_line1,QLabel#label_line2,QLabel#label_line3
-{
-background: #E6E9F4;
-}
-QLabel#label_warning
-{
-color:red;
-}
-
-QPushButton#pBtn_close{
-	border-image: url(:/ESM-8C_ICON/Dialog_close.png);
-}
-
-QPushButton#pBtn_close:hover{
-	
-	border-image: url(:/ESM-8C_ICON/Dialog_close2.png);
-}
-
-
-
-/********* 普通方框按钮三种状态效果 *********/
-QPushButton#pBtn_cancel
-{
-	border-radius: 16px;
-	text-align: center;
-    background: #FFFFFF;
-    border-radius: 16px;
-    border: 1px solid #E6E9F4;
-    color: #3A3F63;
-}
-QPushButton#pBtn_cancel:hover
-{
-	border-radius: 16px;
-	text-align: center;
-    background: #FFFFFF;
-    border-radius: 16px;
-    border: 1px solid #4458FE;
-    color: #4458FE;
-}
-
-/********* 带有底色按钮三种状态效果 *********/
-QPushButton#pBtn_ok
-{
-	border-radius: 16px;
-	text-align: center;
-    color:white;
-    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
-    border-radius: 16px;
-}
-
-QPushButton#pBtn_ok:hover
-{
-	border-radius: 16px;
-	text-align: center;
-    color:white;
-    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
-    border-radius: 16px;
-}
-
-</string>
+    <string notr="true"/>
    </property>
    <widget class="QLabel" name="label_NC1">
     <property name="geometry">

+ 57 - 39
TransmitterSwitch/Template/savetotemplate.cpp

@@ -1,10 +1,12 @@
 #include "savetotemplate.h"
 #include "ui_savetotemplate.h"
 
-#include "BroadCastTime.h"
-#include "ExecPlan.h"
+#include <QStyle>
+#include <QFile>
 
-SaveToTemplate::SaveToTemplate(PageType type, QWidget *parent) :
+#include "lhstylemanager.h"
+
+SaveToTemplate::SaveToTemplate(QWidget *parent) :
     QDialog(parent),
     ui(new Ui::SaveToTemplate)
 {
@@ -15,7 +17,17 @@ SaveToTemplate::SaveToTemplate(PageType type, QWidget *parent) :
     /* 设置底层样式表 */
     this->setAttribute(Qt::WA_TranslucentBackground);
 
-    m_type = type;
+    /* 加载样式表 */
+    // QFile file(":/QSS/QSS/savetotemplate_light.qss");
+    // if(file.open(QFile::ReadOnly))
+    // {
+    //     QString styleSheet = file.readAll();
+    //     this->setStyleSheet(styleSheet);
+    //     file.close();
+    // }
+    LHStyleManager::Instance()->AddWidget(this);
+
+    m_templateNameList.clear();
 
     ui->label_warn->hide();
 
@@ -32,38 +44,50 @@ SaveToTemplate::~SaveToTemplate()
     delete ui;
 }
 
+/* 设置周几 */
+void SaveToTemplate::setWeekDay(int weekDay)
+{
+    m_weekDay = weekDay;
+}
+
+/* 传入计划项是否为空 */
+void SaveToTemplate::setItemEmpty(bool flag)
+{
+    m_itemEmpty = flag;
+}
+
+
+/* 传入所有的模板名称 */
+void SaveToTemplate::setTemplateName(const QStringList &list)
+{
+    m_templateNameList = list;
+}
+
+
+/* 获取模板名称 */
+QString SaveToTemplate::getTemplateName()
+{
+    return m_templateName;
+}
+
 void SaveToTemplate::do_ok()
 {
+    m_isOk = false;
+    m_templateName.clear();
     ui->label_warn->hide();
     setWarning(false);
     /* 检查这一页的项是否为空 */
-    if(m_type == PageType::PageExecPlan)
+    if(m_itemEmpty)
     {
-        auto p = qobject_cast<ExecPlan*>(this->parent());
-        if(p->itemIsEmpty())
-        {
-            ui->label_warn->setText("模版内容不能为空!");
-            ui->label_warn->show();
-            setWarning(true);
-            return;
-        }
-    }
-    else if(m_type == PageType::PageBroadCast)
-    {
-        auto p = qobject_cast<BroadCastTime*>(this->parent());
-        if(p->itemIsEmpty())
-        {
-            ui->label_warn->setText("模版内容不能为空!");
-            ui->label_warn->show();
-            setWarning(true);
-            return;
-        }
+        ui->label_warn->setText("当前页没有计划项!");
+        ui->label_warn->show();
+        setWarning(true);
+        return;
     }
 
-
     /* 检查名称是否是空的 */
-    QString str = ui->lineEdit->text();
-    if(str.isEmpty())
+    m_templateName = ui->lineEdit->text();
+    if(m_templateName.isEmpty())
     {
         ui->label_warn->setText("请输入模版名称!");
         ui->label_warn->show();
@@ -72,20 +96,12 @@ void SaveToTemplate::do_ok()
     }
     /* 检查模板名称是否重复 */
     bool flag = false;
-    if(m_type == PageType::PageBroadCast)
-    {
-        auto p = dynamic_cast<BroadCastTime*>(this->parent());
-        if(p->checkDataBaseTableName(ui->lineEdit->text()))
-        {
-            flag = true;
-        }
-    }
-    else if(m_type == PageType::PageExecPlan)
+    for(const auto& it : m_templateNameList)
     {
-        auto p = dynamic_cast<ExecPlan*>(this->parent());
-        if(p->checkDataBaseTableName(ui->lineEdit->text()))
+        if(it == m_templateName)
         {
             flag = true;
+            break;
         }
     }
 
@@ -97,7 +113,8 @@ void SaveToTemplate::do_ok()
         return;
     }
 
-    emit signal_templateName(ui->lineEdit->text());
+    m_isOk = true;
+    emit signal_templateName(m_templateName);
     this->close();
 }
 
@@ -115,3 +132,4 @@ void SaveToTemplate::setWarning(bool flag)
     ui->lineEdit->style()->unpolish(ui->lineEdit);
     ui->lineEdit->style()->polish(ui->lineEdit);
 }
+

+ 21 - 4
TransmitterSwitch/Template/savetotemplate.h

@@ -2,8 +2,7 @@
 #define SAVETOTEMPLATE_H
 
 #include <QDialog>
-
-#include "common/globalinfo/globalinfo.h"
+#include <qchar.h>
 
 
 namespace Ui {
@@ -17,9 +16,21 @@ class SaveToTemplate : public QDialog
 
 public:
 
-    explicit SaveToTemplate(PageType type, QWidget *parent = nullptr);
+    explicit SaveToTemplate(QWidget *parent = nullptr);
     ~SaveToTemplate();
 
+    /* 设置周几 */
+    void setWeekDay(int weekDay);
+    /* 传入计划项是否为空 */
+    void setItemEmpty(bool flag);
+    /* 传入所有的模板名称 */
+    void setTemplateName(const QStringList &list);
+
+    /* 获取是否点击了确定 */
+    bool isOk() { return m_isOk; }
+    /* 获取模板名称 */
+    QString getTemplateName();
+
 signals:
     void signal_templateName(QString name);
 
@@ -30,7 +41,13 @@ private:
     void setWarning(bool flag);             /* 设置报警 */
 private:
     Ui::SaveToTemplate *ui;
-    PageType m_type;                        /* 是“播出时段”还是“执行计划” */
+
+    bool m_itemEmpty;                       /* 计划项是否为空 */
+    int m_weekDay;                          /* 周几 */
+    QStringList m_templateNameList;         /* 所有的模板名称 */
+
+    bool m_isOk = false;                    /* 是否点击了确定 */
+    QString m_templateName;                 /* 模板名称 */
 };
 
 #endif // SAVETOTEMPLATE_H

+ 1 - 103
TransmitterSwitch/Template/savetotemplate.ui

@@ -28,108 +28,7 @@ background:transparent;
     </rect>
    </property>
    <property name="styleSheet">
-    <string notr="true">QWidget{
-background: #FFFFFF;
-border-radius: 8px;
-font-family: 思源黑体R;
-font-weight: 400;
-font-size: 14px;
-color: #3A3F63;
-line-height: 21px;
-text-align: left;
-font-style: normal;
-}
-
-QLabel#label_NC1
-{
-font-family: 思源黑体M;
-font-weight: bold;
-font-size: 18px;
-color: #3A3F63;
-line-height: 27px;
-text-transform: uppercase;
-}
-
-QLabel#label_line
-{
-background: #E6E9F4;
-}
-
-QLabel#label_warn
-{
-	color:red;
-}
-
-QPushButton#pBtn_close{
-	border-image: url(:/ESM-8C_ICON/Dialog_close.png);
-}
-QPushButton#pBtn_close:hover{
-	
-	border-image: url(:/ESM-8C_ICON/Dialog_close2.png);
-}
-
-/********* 普通方框按钮三种状态效果 *********/
-QPushButton#pBtn_cancel
-{
-	border-radius: 16px;
-	text-align: center;
-    background: #FFFFFF;
-    border-radius: 16px;
-    border: 1px solid #E6E9F4;
-    color: #3A3F63;
-}
-QPushButton#pBtn_cancel:hover
-{
-	border-radius: 16px;
-	text-align: center;
-    background: #FFFFFF;
-    border-radius: 16px;
-    border: 1px solid #4458FE;
-    color: #4458FE;
-}
-
-/********* 带有底色按钮三种状态效果 *********/
-QPushButton#pBtn_ok
-{
-	border-radius: 16px;
-	text-align: center;
-    color:white;
-    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
-    border-radius: 16px;
-}
-
-QPushButton#pBtn_ok:hover
-{
-	border-radius: 16px;
-	text-align: center;
-    color:white;
-    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
-    border-radius: 16px;
-}
-
-/****************  报警红框  ****************/
-QLineEdit
-{
-    background: #FFFFFF;
-    border-radius: 4px;
-    padding-left:12px;
-	border: 1px solid #E6E9F4;
-}
-
-
-QLineEdit[Warn=true]
-{
-    border: 1px solid #D21F21;
-}
-
-QLineEdit:!enabled/* 或者disable */
-{
-    background: rgba(0,0,0,0.04);
-    border: 1px solid #E6E9F4;
-}
-
-
-</string>
+    <string notr="true"/>
    </property>
    <widget class="QLabel" name="label_NC1">
     <property name="geometry">
@@ -208,7 +107,6 @@ QLineEdit:!enabled/* 或者disable */
     <property name="font">
      <font>
       <family>思源黑体R</family>
-      <pointsize>-1</pointsize>
       <weight>50</weight>
       <italic>false</italic>
       <bold>false</bold>

+ 82 - 0
TransmitterSwitch/WebAPI/FromWebAPI.cpp

@@ -442,3 +442,85 @@ bool FromWebAPI::deleteAllTransmitterPlan()
     return true;
 }
 
+
+/* 保存到模板 */
+bool FromWebAPI::saveTemplate(const QString& templateName, QList<ExecPlanItemInfo>& list)
+{
+    if(m_httpApi == nullptr)
+    {
+        LH_WRITE_ERROR("WebAPI is nullptr");
+        return false;
+    }
+
+    nJson json0 = nJson::array();
+    for(const auto& it : list)
+    {
+        nJson json1;
+        json1["opName"] = "ESM8C_SaveToTemplate";
+        json1["Key"] = QUuid::createUuid().toString().toStdString();
+        nJson json2;
+
+        json2["TemplateName"] = templateName.toStdString();
+        json2["Date"] = it.date.toString("yyyy-MM-dd").toStdString();
+        json2["ExecTime"] = it.execTime.toString("hh:mm:ss").toStdString();
+        json2["DeviceName"] = it.devName.toStdString();
+        json2["ActionName"] = it.actionName.toStdString();
+        json2["ActionID"] = static_cast<int>(it.actionID);
+
+        json1["paramList"] = json2;
+        json0.push_back(json1);
+    }
+
+    /* 将json写入本地文件 */
+#ifdef C_DEBUG
+    QString fileJson(QString::fromStdString(json0.dump(4)));
+    LH_WRITE_LOG_DEBUG("\n" + fileJson);
+#endif
+    /* 写入EQM数据库 */
+    QString strCmd = QString::fromStdString(json0.dump());
+    QString strRet;
+    auto ret = m_httpApi->DBDoInterface(enDBOperatorType::EDBOT_BatchTransAction, strCmd, strRet);
+    if(ret < 0)
+    {
+        LH_WRITE_ERROR(QString("保存到模板失败:%1, 错误信息:%2").arg(ret).arg(m_httpApi->DoGetLastError(&ret)));
+        return false;
+    }
+    LH_WRITE_LOG("保存到模板成功");
+
+    return true;
+    
+
+}
+
+/* 获取模板内容 */
+bool FromWebAPI::getTemplate(QString templateName, QList<ExecPlanItemInfo>& list)
+{
+    if(m_httpApi == nullptr)
+    {
+        LH_WRITE_ERROR("WebAPI is nullptr");
+        return false;
+    }
+}
+
+/* 获取模板列表 */
+bool FromWebAPI::getTemplateList(QList<QString>& list)
+{
+    if(m_httpApi == nullptr)
+    {
+        LH_WRITE_ERROR("WebAPI is nullptr");
+        return false;
+    }
+
+}
+
+/* 删除一个模板 */
+bool FromWebAPI::deleteTemplate(const QString& name)
+{
+    if(m_httpApi == nullptr)
+    {
+        LH_WRITE_ERROR("WebAPI is nullptr");
+        return false;
+    }
+    
+}
+

+ 9 - 0
TransmitterSwitch/WebAPI/FromWebAPI.h

@@ -30,6 +30,15 @@ public:
     /* 删除所有的发射机计划 */
     bool deleteAllTransmitterPlan();
 
+    /* 保存到模板 */
+    bool saveTemplate(const QString& templateName, QList<ExecPlanItemInfo>& list);
+    /* 获取模板内容 */
+    bool getTemplate(QString templateName, QList<ExecPlanItemInfo>& list);
+    /* 获取模板列表 */
+    bool getTemplateList(QList<QString>& list);
+    /* 删除一个模板 */
+    bool deleteTemplate(const QString& name);
+
 private:
 
     lhhttpapi* m_httpApi = nullptr;

+ 7 - 7
TransmitterSwitch/common/date/calendarnav.cpp

@@ -15,14 +15,14 @@ CalendarNav::CalendarNav(QCalendarWidget *pCalendar, QWidget *parent)
     ui->setupUi(this);
 
     /* 加载qss */
-    QFile file = QString(":/Calendar/qss/CalendarNav_light.qss");
-    if(!file.open(QIODevice::ReadOnly))
-    {
-        qDebug() << "CalendarNav.cpp:QSS打开失败";
-    }
-    QString  ss = file.readAll();
+    // QFile file = QString(":/Calendar/qss/CalendarNav_light.qss");
+    // if(!file.open(QIODevice::ReadOnly))
+    // {
+    //     qDebug() << "CalendarNav.cpp:QSS打开失败";
+    // }
+    // QString  ss = file.readAll();
 
-    this->setStyleSheet(ss);
+    // this->setStyleSheet(ss);
 
     connect(ui->btnPrevYear, &QPushButton::clicked, m_pCalendar, &QCalendarWidget::showPreviousYear);
     connect(ui->btnPrevMonth, &QPushButton::clicked, m_pCalendar, &QCalendarWidget::showPreviousMonth);

+ 4 - 3
TransmitterSwitch/common/date/calendarwidgetex.cpp

@@ -301,8 +301,9 @@ int CalendarWidgetEx::columnForDayOfWeek(int day) const
 
 void CalendarWidgetEx::initSkinColor()
 {
-    switch (LHStyleManager::Instance()->GetCurSkinStyle()) {
-    case eBrightStyle:
+    switch (LHStyleManager::Instance()->GetCurSkinStyle()) 
+    {
+    case eWhiteStyle:
         m_normalTextColor = NORMAL_TEXT_BRIGHT;
         m_todayTextColor = TODAY_TEXT_BRIGHT;
         m_selectTextColor = SELECT_TEXT_BRIGHT;
@@ -311,7 +312,7 @@ void CalendarWidgetEx::initSkinColor()
         m_selectBlockColor = SELECT_BRIGHT;
         m_hoverBlockColor = HOVER_BRIGHT;
         break;
-    case eDarkStyle:
+    case eBlackStyle:
         m_normalTextColor = NORMAL_TEXT_DEEP;
         m_todayTextColor = TODAY_TEXT_DEEP;
         m_selectTextColor = SELECT_TEXT_DEEP;

+ 10 - 2
TransmitterSwitch/common/warning/warning.cpp

@@ -4,9 +4,8 @@
 #include <QPainter>
 #include <QLayout>
 #include <QDebug>
+#include <QFile>
 
-
-#include "spdlog/spdlog.h"
 #include "oneshadow.h"
 
 Warning::Warning(QWidget *parent) :
@@ -18,6 +17,15 @@ Warning::Warning(QWidget *parent) :
     this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
     this->setAttribute(Qt::WA_TranslucentBackground);
 
+    /* 加载QSS */
+    QFile file(":/QSS/QSS/warning_light.qss");
+    if(file.open(QFile::ReadOnly))
+    {
+        QString styleSheet = file.readAll();
+        this->setStyleSheet(styleSheet);
+        file.close();
+    }
+
     /* 设置文字自动换行 */
     ui->label_Warn->setWordWrap(true);
     /* 设置文本居中 */

+ 1 - 83
TransmitterSwitch/common/warning/warning.ui

@@ -38,89 +38,7 @@ background:transparent;
    <item>
     <widget class="QWidget" name="widget" native="true">
      <property name="styleSheet">
-      <string notr="true">QWidget{
-background: #FFFFFF;
-border-radius: 8px;
-font-family: 思源黑体R;
-font-weight: 400;
-font-size: 18px;
-color: #3A3F63;
-line-height: 21px;
-text-align: left;
-font-style: normal;
-}
-
-QLabel#label_NC1
-{
-font-family: 思源黑体M;
-font-weight: bold;
-font-size: 18px;
-color: #3A3F63;
-line-height: 27px;
-text-transform: uppercase;
-}
-
-QLabel#label_line
-{
-background: #E6E9F4;
-}
-
-QLabel#label_Warn
-{
-	font-family: 思源黑体R;
-	font-weight: 400;
-	font-size: 18px;
-	color: #3A3F63;
-	line-height: 27px;
-}
-
-QPushButton#pBtn_close{
-	border-image: url(:/ESM-8C_ICON/Dialog_close.png);
-}
-QPushButton#pBtn_close:hover{
-	
-	border-image: url(:/ESM-8C_ICON/Dialog_close2.png);
-}
-
-QPushButton
-{
-	background: #FFFFFF;
-	border: 1px solid #E6E9F4;
-	text-align: center;
-}
-
-
-/********* 普通方框按钮三种状态效果 *********/
-QPushButton#pBtn_cancel
-{
-    background: #FFFFFF;
-    border-radius: 16px;
-    border: 1px solid #E6E9F4;
-    color: #3A3F63;
-}
-QPushButton#pBtn_cancel:hover
-{
-    background: #FFFFFF;
-    border-radius: 16px;
-    border: 1px solid #4458FE;
-    color: #4458FE;
-}
-
-/********* 带有底色按钮三种状态效果 *********/
-QPushButton#pBtn_ok
-{
-    color:white;
-    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:1 #4F8AFF,stop:0 #4B5EFF);
-    border-radius: 16px;
-}
-
-QPushButton#pBtn_ok:hover
-{
-    color:white;
-    background: qlineargradient( x0:1,x1:1,y1:0,y2:0,stop:0 #5D73FF,stop:1 #6092FF);
-    border-radius: 16px;
-}
-</string>
+      <string notr="true"/>
      </property>
      <widget class="QLabel" name="label_NC1">
       <property name="geometry">

+ 76 - 3
TransmitterSwitch/transmitterswitch.cpp

@@ -1,9 +1,12 @@
 #include "transmitterswitch.h"
+#include "importtemplate.h"
 #include "ui_transmitterswitch.h"
 
 #include <QFile>
 #include <QList>
 #include <memory>
+#include <qlist.h>
+#include <qstringliteral.h>
 
 #include "LHQLogAPI.h"
 #include "widgetitems.h"
@@ -16,7 +19,9 @@
 #include "ItemData.h"
 #include "timewidget.h"
 #include "cdate.h"
-
+#include "savetotemplate.h"
+#include "importtemplate.h"
+#include "lhstylemanager.h"
 
 TransmitterSwitch::TransmitterSwitch(QWidget *parent) :
     QWidget(parent),
@@ -55,6 +60,9 @@ TransmitterSwitch::TransmitterSwitch(QWidget *parent) :
     connect(ui->pBtn_importPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_importData);
     connect(ui->pBtn_exportPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_exportData);
     connect(ui->pBtn_clearPlan, &QPushButton::clicked, this, &TransmitterSwitch::do_clearCurrentPage);
+
+    /* 设置QSS */
+    LHStyleManager::Instance()->AddWidget(this);
 }
 
 TransmitterSwitch::~TransmitterSwitch()
@@ -371,13 +379,72 @@ void TransmitterSwitch::do_editExecDate(QDate d)
 /* 导入数据 */
 void TransmitterSwitch::do_importData()
 {
-    
+    /* 获取当前周几 */
+    int weekDay = ui->stackedWidget_items->currentIndex();
+
+    QStringList tabList;
+    tabList << "模板1" << "模板2" << "模板3" << "模板4" << "模板5";
+    std::shared_ptr<ImportTemplate> itf = std::make_shared<ImportTemplate>(tabList, this);
+
+    /* 连接信号和槽 */
+    connect(itf.get(), &ImportTemplate::signal_deleteTemplate, this, &TransmitterSwitch::do_deleteTemplate);
+
+
+    itf->exec();
+    if(itf->isOk())
+    {
+        /* 获取模板名称 */
+        auto name = itf->getTemplateName();
+        /* 获取模板内容 */
+        QList<ExecPlanItemInfo> list;
+        m_fromWebAPI->getTemplate(name, list);
+        /* 清除当前页内容 */
+        IData.clearOneDay(weekDay);
+        /* 添加计划项 */
+        if (weekDay < 8 && weekDay > 0)
+        {
+            for(const auto& it : list)
+            {
+                addNormalOneItem(it.WeekDay - 1, it.devName, it.actionName, it.execTime);
+            }
+        }else if (weekDay == 8)
+        {
+            for(const auto& it : list)
+            {
+                addSpecialOneItem(it.WeekDay - 1, it.devName, it.actionName, it.date, it.execTime);
+            }
+        }
+        /* 排序 */
+        sortLayout(weekDay);
+    }
 }
 
 /* 导出数据 */
 void TransmitterSwitch::do_exportData()
 {
-    
+    std::shared_ptr<SaveToTemplate> stt = std::make_shared<SaveToTemplate>(this);
+    int weekDay = ui->stackedWidget_items->currentIndex();
+    /* 设置周几 */
+    stt->setWeekDay(weekDay);
+    /* 判断当前页是否有计划 */
+    if(IData.getOneDay(weekDay)->size() == 0)
+    {
+        stt->setItemEmpty(true);
+    }else
+    {
+        stt->setItemEmpty(false);
+    }
+    /* 获取所有的模板名称,并设置 */
+    // stt->setTemplateName();
+
+    stt->exec();
+    if(stt->isOk())
+    {
+        /* 获取一天的数据 */
+        auto list = IData.getOneDayExecPlan(weekDay);
+        /* 保存到模板 */
+        m_fromWebAPI->saveTemplate(stt->getTemplateName(), list);
+    }
 }
 
 /* 清空当前页计划 */
@@ -388,6 +455,12 @@ void TransmitterSwitch::do_clearCurrentPage()
     sortLayout(weekDay);
 }
 
+/* 删除一个模板 */
+void TransmitterSwitch::do_deleteTemplate(QString name)
+{
+    m_fromWebAPI->deleteTemplate(name);
+}
+
 
 /* 创建一周8天的item页面 */
 void TransmitterSwitch::createWeekWidget()

+ 4 - 2
TransmitterSwitch/transmitterswitch.h

@@ -45,12 +45,14 @@ private slots:
     /* 点击修改日期 */
     void do_editExecDate(QDate d);
 
-    /* 导入数据 */
+    /* 导入模板 */
     void do_importData();
-    /* 导出数据 */
+    /* 保存为模板 */
     void do_exportData();
     /* 清空当前页计划 */
     void do_clearCurrentPage();
+    /* 删除一个模板 */
+    void do_deleteTemplate(QString name);
 
 private:
     /* 创建一周8天的item页面 */

+ 160 - 0
demo/换肤/alarmrecordwidget.qss

@@ -0,0 +1,160 @@
+QLabel#label_alarm_1,
+#label_alarm_2,
+#label_alarm_3
+{
+font-size: 14px;
+font-weight: 400;
+color: #B1B3B4;
+line-height: 22px;
+}
+
+QPushButton#alarm_search
+{
+border-image:url(:/btn/source/search_normal.png);
+font-size: 14px;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 22px;
+padding-left:12px;
+}
+QPushButton#alarm_search:hover
+{
+border-image:url(:/btn/source/search_hover.png);
+font-size: 14px;
+font-weight: 400;
+color: #FFFFFF;
+line-height: 22px;
+padding-left:12px;
+}
+
+QPushButton#alarm_reset
+{
+border-image:url(:/btn/source/reset_normal2.png);
+font-size: 14px;
+font-weight: 400;
+color: #D2D2D2;
+line-height: 22px;
+padding-left:12px;
+}
+QPushButton#alarm_reset:hover
+{
+border-image:url(:/btn/source/reset_hover2.png);
+font-size: 14px;
+font-weight: 400;
+color: #D2D2D2;
+line-height: 22px;
+padding-left:12px;
+}
+
+QPushButton#alarm_export
+{
+border-image:url(:/btn/source/export_normal2.png);
+font-size: 14px;
+font-weight: 400;
+color: #D2D2D2;
+line-height: 22px;
+padding-left:12px;
+}
+QPushButton#alarm_export:hover
+{
+border-image:url(:/btn/source/export_hover2.png);
+font-size: 14px;
+font-weight: 400;
+color: #D2D2D2;
+line-height: 22px;
+padding-left:12px;
+}
+
+QPushButton#alarm_print
+{
+border-image:url(:/btn/source/print_normal2.png);
+font-size: 14px;
+font-weight: 400;
+color: #D2D2D2;
+line-height: 22px;
+padding-left:12px;
+}
+QPushButton#alarm_print:hover
+{
+border-image:url(:/btn/source/print_hover2.png);
+font-size: 14px;
+font-weight: 400;
+color: #D2D2D2;
+line-height: 22px;
+padding-left:12px;
+}
+
+QTableView
+{
+	border:none;
+	background-color: rgba(32, 36, 40, 1);
+	font-weight:400;
+	font-size:14px;
+	min-height:60px;
+}
+QTableView::item::section
+{
+    border-bottom: 1px solid rgb(0, 0, 0);
+	border-color: rgb(222, 225, 230);
+	color: rgb(0, 0, 0);
+}
+QTableView::item:selected 
+{
+	background-color: rgb(0, 120, 215);
+}
+
+QHeaderView
+{
+	border:none;
+	background:rgba(49, 53, 57, 1);
+	qproperty-defaultAlignment: 'AlignHCenter|AlignVCenter';
+	font-size:14px;
+}
+QHeaderView::section
+{
+	border:none;	
+	background:rgba(49, 53, 57, 1);
+	color:rgba(210, 210, 210, 1);
+	min-height:40px;
+}
+
+QScrollBar:horizontal,QScrollBar:vertical
+{
+	border:none;
+	background-color: rgba(255, 255, 255, 0);
+    margin: 0px 0px 0px 0px;
+}
+QScrollBar:horizontal
+{
+    height: 12px;
+}
+QScrollBar:vertical
+{
+    width: 12px;
+}
+QScrollBar::handle:horizontal,QScrollBar::handle:vertical
+{
+    background: rgb(89, 89, 89);
+	border-radius: 6px;
+    min-width: 12px;
+}
+QScrollBar::handle:horizontal
+{
+	min-width: 12px;
+}
+QScrollBar::handle:vertical
+{
+	min-height: 12px;
+}
+QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal,
+QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical
+{
+	background-color: rgba(255, 255, 255, 0);
+	border: none;
+}
+QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal,
+QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical
+{
+	background-color: rgba(255, 255, 255, 0);
+    background: none;
+}

+ 77 - 0
demo/换肤/lhstylemanager.cpp

@@ -0,0 +1,77 @@
+#include "lhstylemanager.h"
+
+LHStyleManager* LHStyleManager::m_instance = NULL;
+
+LHStyleManager::LHStyleManager(QObject *parent) : QObject(parent)
+{
+    m_nCurStyle = eBlackStyle;
+}
+
+LHStyleManager::~LHStyleManager()
+{
+    if(m_instance)
+    {
+        delete m_instance;
+    }
+}
+
+LHStyleManager *LHStyleManager::Instance()
+{
+    if(m_instance != NULL)
+    {
+        return m_instance;
+    }
+    m_instance = new LHStyleManager();
+    return m_instance;
+}
+
+void LHStyleManager::AddWidget(QWidget *widget)
+{
+    if(widget != NULL && !m_widgetList.contains(widget))
+    {
+        m_widgetList.append(widget);
+        UpdateWidgetStyle(widget);
+    }
+}
+
+void LHStyleManager::UpdateWidgetStyle(QWidget *widget)
+{
+    if(widget == NULL)
+    {
+        return;
+    }
+    QString strBasePath = QCoreApplication::applicationDirPath();
+    QString strStylePath;
+    QString strName = widget->objectName().toLower();
+    if(m_nCurStyle == eWhiteStyle)
+    {
+        strStylePath = "white";
+    }
+    else if(m_nCurStyle == eBlackStyle)
+    {
+        strStylePath = "black";
+    }
+    QString strStyleFile = strBasePath + QString("/%1/%2.qss").arg(strStylePath).arg(strName);
+    QFile file(strStyleFile);
+    file.open(QFile::ReadOnly);
+    QString styleSheet = QLatin1String(file.readAll());
+    widget->setStyleSheet(styleSheet);
+    file.close();
+}
+
+void LHStyleManager::SetSkinStyle(SkinStyle style)
+{
+    if(m_nCurStyle == style)
+    {
+        return;
+    }
+
+    m_nCurStyle = style;
+
+    for(int i = 0; i < m_widgetList.size(); i++)
+    {
+        QWidget* widget = m_widgetList.at(i);
+        if(widget == NULL) continue;
+        UpdateWidgetStyle(widget);
+    }
+}

+ 46 - 0
demo/换肤/lhstylemanager.h

@@ -0,0 +1,46 @@
+#ifndef LHSTYLEMANAGER_H
+#define LHSTYLEMANAGER_H
+
+#include <QObject>
+#include <QWidget>
+#include <QList>
+#include <QCoreApplication>
+
+enum SkinStyle{eWhiteStyle, eBlackStyle};
+
+class LHStyleManager : public QObject
+{
+    Q_OBJECT
+public:
+    explicit LHStyleManager(QObject *parent = nullptr);
+    ~LHStyleManager();
+
+    static LHStyleManager* Instance();
+
+    void AddWidget(QWidget* widget);
+
+    void SetSkinStyle(SkinStyle style);
+
+    SkinStyle GetCurSkinStyle(){return m_nCurStyle;}
+
+signals:
+
+public slots:
+
+private:
+    void UpdateWidgetStyle(QWidget* widget);
+
+private:
+    //当前样式
+    SkinStyle m_nCurStyle;
+    //所有需要更改样式的widget
+    QWidgetList m_widgetList;
+    //白色样式表
+    QString m_strWhiteStyle;
+    //黑色样式表
+    QString m_strBlackStyle;
+
+    static LHStyleManager *m_instance;
+};
+
+#endif // LHSTYLEMANAGER_H

+ 8 - 4
show1/CMakeLists.txt

@@ -9,6 +9,8 @@ file(GLOB LOCAL_SRC
     ${CMAKE_CURRENT_SOURCE_DIR}/*.ui
     ${CMAKE_CURRENT_SOURCE_DIR}/*.qrc
 
+    ${CMAKE_CURRENT_SOURCE_DIR}/StyleManager/*.cpp
+
     ${CMAKE_SOURCE_DIR}/External/common/Thread/*.cpp
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/*.cpp
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/WebAPI/*.cpp
@@ -17,7 +19,7 @@ file(GLOB LOCAL_SRC
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/UserData/*.cpp
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/AddItem/*.cpp
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/ItemData/*.cpp
-    # ${CMAKE_SOURCE_DIR}/TransmitterSwitch/Template/*.cpp
+    ${CMAKE_SOURCE_DIR}/TransmitterSwitch/Template/*.cpp
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/warnning/*.cpp
 
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/Shadow/*.cpp
@@ -28,7 +30,7 @@ file(GLOB LOCAL_SRC
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/date/*.qrc
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/DropShadow/*.cpp
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/PaintHelper/*.cpp
-    ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/StyleManager/*.cpp
+    ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/warning/*.cpp
 
     # ${LHQLog_SOURCE_DIRS}/*.cpp
     ${LHHTTPAPI_SOURCE_DIRS}/*.cpp
@@ -46,6 +48,8 @@ target_include_directories(${execName1} PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}/LHLog
 
+    ${CMAKE_CURRENT_SOURCE_DIR}/StyleManager
+
     ${CMAKE_SOURCE_DIR}/External/common/Thread
 
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch
@@ -54,7 +58,7 @@ target_include_directories(${execName1} PRIVATE
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/UserData
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/AddItem
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/ItemData
-    # ${CMAKE_SOURCE_DIR}/TransmitterSwitch/Template
+    ${CMAKE_SOURCE_DIR}/TransmitterSwitch/Template
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/warnning
 
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common
@@ -64,7 +68,7 @@ target_include_directories(${execName1} PRIVATE
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/combobox
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/SelectTime
     ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/date
-
+    ${CMAKE_SOURCE_DIR}/TransmitterSwitch/common/warning
 
     # ${LHQLog_INCLUDE_DIRS}
     ${LHHTTPAPI_INCLUDE_DIRS}

+ 78 - 0
show1/StyleManager/lhstylemanager.cpp

@@ -0,0 +1,78 @@
+#include "lhstylemanager.h"
+
+LHStyleManager* LHStyleManager::m_instance = NULL;
+
+LHStyleManager::LHStyleManager(QObject *parent) : QObject(parent)
+{
+    m_nCurStyle = eWhiteStyle;
+}
+
+LHStyleManager::~LHStyleManager()
+{
+    if(m_instance)
+    {
+        delete m_instance;
+    }
+}
+
+LHStyleManager *LHStyleManager::Instance()
+{
+    if(m_instance != NULL)
+    {
+        return m_instance;
+    }
+    m_instance = new LHStyleManager();
+    return m_instance;
+}
+
+void LHStyleManager::AddWidget(QWidget *widget)
+{
+    if(widget != NULL && !m_widgetList.contains(widget))
+    {
+        m_widgetList.append(widget);
+        UpdateWidgetStyle(widget);
+    }
+}
+
+void LHStyleManager::UpdateWidgetStyle(QWidget *widget)
+{
+    if(widget == NULL)
+    {
+        return;
+    }
+    QString strBasePath = QCoreApplication::applicationDirPath();
+    QString strStylePath;
+    QString strName = widget->objectName().toLower();
+    if(m_nCurStyle == eWhiteStyle)
+    {
+        strStylePath = "white";
+    }
+    else if(m_nCurStyle == eBlackStyle)
+    {
+        strStylePath = "black";
+    }
+    QString strStyleFile = strBasePath + QString("/%1/%2.qss").arg(strStylePath).arg(strName);
+    QFile file(strStyleFile);
+    file.open(QFile::ReadOnly);
+    // QString styleSheet = QLatin1String(file.readAll());
+    QString styleSheet = file.readAll();
+    widget->setStyleSheet(styleSheet);
+    file.close();
+}
+
+void LHStyleManager::SetSkinStyle(SkinStyle style)
+{
+    if(m_nCurStyle == style)
+    {
+        return;
+    }
+
+    m_nCurStyle = style;
+
+    for(int i = 0; i < m_widgetList.size(); i++)
+    {
+        QWidget* widget = m_widgetList.at(i);
+        if(widget == NULL) continue;
+        UpdateWidgetStyle(widget);
+    }
+}

+ 0 - 0
TransmitterSwitch/common/StyleManager/lhstylemanager.cpp → show1/StyleManager/lhstylemanager.cpp_


+ 46 - 0
show1/StyleManager/lhstylemanager.h

@@ -0,0 +1,46 @@
+#ifndef LHSTYLEMANAGER_H
+#define LHSTYLEMANAGER_H
+
+#include <QObject>
+#include <QWidget>
+#include <QList>
+#include <QCoreApplication>
+
+enum SkinStyle{eWhiteStyle, eBlackStyle};
+
+class LHStyleManager : public QObject
+{
+    Q_OBJECT
+public:
+    explicit LHStyleManager(QObject *parent = nullptr);
+    ~LHStyleManager();
+
+    static LHStyleManager* Instance();
+
+    void AddWidget(QWidget* widget);
+
+    void SetSkinStyle(SkinStyle style);
+
+    SkinStyle GetCurSkinStyle(){return m_nCurStyle;}
+
+signals:
+
+public slots:
+
+private:
+    void UpdateWidgetStyle(QWidget* widget);
+
+private:
+    //当前样式
+    SkinStyle m_nCurStyle;
+    //所有需要更改样式的widget
+    QWidgetList m_widgetList;
+    //白色样式表
+    QString m_strWhiteStyle;
+    //黑色样式表
+    QString m_strBlackStyle;
+
+    static LHStyleManager *m_instance;
+};
+
+#endif // LHSTYLEMANAGER_H

+ 0 - 0
TransmitterSwitch/common/StyleManager/lhstylemanager.h → show1/StyleManager/lhstylemanager.h_


+ 35 - 2
show1/widget.cpp

@@ -1,8 +1,11 @@
 #include "widget.h"
+#include "TransmitterSwitchInfo.h"
 #include "ui_widget.h"
 
 #include "LHQLogAPI.h"
-#include "common/StyleManager/lhstylemanager.h"
+#include "lhstylemanager.h"
+
+#include "TransmitterswitchInfo.h"
 
 Widget::Widget(QWidget *parent) :
     QWidget(parent),
@@ -22,11 +25,14 @@ Widget::Widget(QWidget *parent) :
     m_layout->setSpacing(0);
 
     /* 设置参数 */
-    m_tSwitch->setQSS(":/QSS/QSS/TransmitterSwitch_dark.qss");
+    // m_tSwitch->setQSS(":/QSS/QSS/TransmitterSwitch_dark.qss");
 
     /* 初始化WebAPI */
     m_tSwitch->setWebAPIInfo("http://192.1.3.133:31000/v6/", "2e36b53ccd2a433b9a803b98d683ed91", "TMS");
 
+    /* 添加设备信息,测试用 */
+    addTestDevice();
+
 }
 
 Widget::~Widget()
@@ -66,3 +72,30 @@ void Widget::on_pBtn_saveData_clicked()
     }
     m_tSwitch->saveExecPlanToEQM();
 }
+
+/* 添加测试用的设备信息 */
+void Widget::addTestDevice()
+{
+    auto devType = DevTypeContainer.getDevType(955);
+    if(devType.PTTypeCode == -1)
+    {
+        return;
+    }
+    DeviceInfo devInfo;
+    devInfo.devName = "衢州台主发射机";
+    devInfo.PTTypeCode = 955;
+    devInfo.DTID = 1;
+    devInfo.DID = 1;
+    devInfo.ChannelID = 1;
+    devInfo.DevType = devType;
+    DeviceContainer.addDevice(devInfo);
+
+    devInfo.devName = "衢州台备发射机";
+    devInfo.PTTypeCode = 955;
+    devInfo.DTID = 1;
+    devInfo.DID = 2;
+    devInfo.ChannelID = 2;
+    devInfo.DevType = devType;
+    DeviceContainer.addDevice(devInfo);
+    
+}

+ 4 - 0
show1/widget.h

@@ -26,6 +26,10 @@ private slots:
     /* 导出数据按钮 */
     void on_pBtn_saveData_clicked();
 
+private:
+    /* 添加测试用的设备信息 */
+    void addTestDevice();
+
 private:
     Ui::Widget *ui;
 

BIN
归档.zip