|  | @@ -10,6 +10,7 @@
 | 
	
		
			
				|  |  |  #include <QMouseEvent>
 | 
	
		
			
				|  |  |  #include <memory>
 | 
	
		
			
				|  |  |  #include <qchar.h>
 | 
	
		
			
				|  |  | +#include <qnamespace.h>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include "warning/warning.h"
 | 
	
		
			
				|  |  |  #include "LHQLogAPI.h"
 | 
	
	
		
			
				|  | @@ -61,8 +62,8 @@ TemplateManager::TemplateManager(QWidget *parent) :
 | 
	
		
			
				|  |  |      //设置行高
 | 
	
		
			
				|  |  |      ui->tableWidget->verticalHeader()->setDefaultSectionSize(40);
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  | -    //设置不可编辑
 | 
	
		
			
				|  |  | -    ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers);
 | 
	
		
			
				|  |  | +    /* 设置可编辑,后续创建的时候,单独设置不可编辑 */
 | 
	
		
			
				|  |  | +    ui->tableWidget->setEditTriggers(QTableWidget::DoubleClicked);
 | 
	
		
			
				|  |  |      //设置选中一行
 | 
	
		
			
				|  |  |      ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
 | 
	
		
			
				|  |  |      //设置只能选中一行
 | 
	
	
		
			
				|  | @@ -148,11 +149,41 @@ void TemplateManager::do_itemChanged(QTableWidgetItem* item)
 | 
	
		
			
				|  |  |      info.templateName = item->data(m_roleTemplateName).toString();
 | 
	
		
			
				|  |  |      info.channelInfo.ChannelID = item->data(m_roleChnID).toInt();
 | 
	
		
			
				|  |  |      /* 判断是否修改了模版名称 */
 | 
	
		
			
				|  |  | -    if(newName != info.templateName)
 | 
	
		
			
				|  |  | +    if(newName == info.templateName)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -        /* 修改模版名称 */
 | 
	
		
			
				|  |  | -        m_mapModifyTemplateName.insert(info, newName);
 | 
	
		
			
				|  |  | +        return;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    /* 判断同频率下的模板名称是否冲突 */
 | 
	
		
			
				|  |  | +    int rowCount = ui->tableWidget->rowCount();
 | 
	
		
			
				|  |  | +    for(int i = 0; i < rowCount; i++)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        /* 排除当前项 */
 | 
	
		
			
				|  |  | +        if(i == item->row())
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            continue;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        /* 获取当前项显示的名称 */
 | 
	
		
			
				|  |  | +        auto itemTmp = ui->tableWidget->item(i, 1);
 | 
	
		
			
				|  |  | +        if(itemTmp == nullptr)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            continue;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        /* 获取当前项的模版名称 */
 | 
	
		
			
				|  |  | +        QString strName = itemTmp->text();
 | 
	
		
			
				|  |  | +        /* 获取当前项的模版频率 */
 | 
	
		
			
				|  |  | +        int chnID = itemTmp->data(m_roleChnID).toInt();
 | 
	
		
			
				|  |  | +        /* 判断是否冲突 */
 | 
	
		
			
				|  |  | +        if(chnID == info.channelInfo.ChannelID && strName == newName)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            /* 已经存在相同的模版名称 */
 | 
	
		
			
				|  |  | +            LH_WRITE_ERROR(QString("模版名称冲突:%1").arg(newName));
 | 
	
		
			
				|  |  | +            TipWidget::display(TipWidget::OPERATOR_FAIL, "模版名称冲突", this);
 | 
	
		
			
				|  |  | +            item->setText(info.templateName);
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    /* 修改模版名称 */
 | 
	
		
			
				|  |  | +    m_mapModifyTemplateName.insert(info, newName);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -172,10 +203,15 @@ void TemplateManager::showEvent(QShowEvent *event)
 | 
	
		
			
				|  |  |  /* 设置模版列表 */
 | 
	
		
			
				|  |  |  void TemplateManager::setTemplateList(const QMultiMap<int, OneTemplateInfo>& mapTemplate)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +    // 暂时阻止 itemChanged 信号
 | 
	
		
			
				|  |  | +    ui->tableWidget->blockSignals(true);
 | 
	
		
			
				|  |  |      for(auto it = mapTemplate.begin(), end = mapTemplate.end(); it != end; it++)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          createRow(it.value());
 | 
	
		
			
				|  |  | +        m_listTemplate.append(it.value());
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +    // 恢复信号
 | 
	
		
			
				|  |  | +    ui->tableWidget->blockSignals(false);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -232,6 +268,7 @@ void TemplateManager::createRow(const OneTemplateInfo& info)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* 频率名称 */
 | 
	
		
			
				|  |  |      QTableWidgetItem* item0 = new QTableWidgetItem(info.channelInfo.ChannelName);
 | 
	
		
			
				|  |  | +    item0->setFlags(item0->flags() & ~Qt::ItemIsEditable);
 | 
	
		
			
				|  |  |      item0->setData(m_roleChnID, info.channelInfo.ChannelID);
 | 
	
		
			
				|  |  |      ui->tableWidget->setItem(row, 0, item0);
 | 
	
		
			
				|  |  |      /* 模板名称,需要可编辑 */
 | 
	
	
		
			
				|  | @@ -243,18 +280,21 @@ void TemplateManager::createRow(const OneTemplateInfo& info)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* 添加固定的三个项 */
 | 
	
		
			
				|  |  |      auto item2 = new QTableWidgetItem("预览");
 | 
	
		
			
				|  |  | +    item2->setFlags(item0->flags() & ~Qt::ItemIsEditable);
 | 
	
		
			
				|  |  |      item2->setData(m_roleChnID, info.channelInfo.ChannelID);
 | 
	
		
			
				|  |  |      item2->setData(m_roleTemplateName, info.templateName);
 | 
	
		
			
				|  |  |      item2->setForeground(QBrush("#438EFF"));
 | 
	
		
			
				|  |  |      ui->tableWidget->setItem(row, 2, item2);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      auto item3 = new QTableWidgetItem("修改");
 | 
	
		
			
				|  |  | +    item3->setFlags(item0->flags() & ~Qt::ItemIsEditable);
 | 
	
		
			
				|  |  |      item3->setData(m_roleChnID, info.channelInfo.ChannelID);
 | 
	
		
			
				|  |  |      item3->setData(m_roleTemplateName, info.templateName);
 | 
	
		
			
				|  |  |      item3->setForeground(QBrush("#438EFF"));
 | 
	
		
			
				|  |  |      ui->tableWidget->setItem(row, 3, item3);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      auto item4 = new QTableWidgetItem("删除");
 | 
	
		
			
				|  |  | +    item4->setFlags(item0->flags() & ~Qt::ItemIsEditable);
 | 
	
		
			
				|  |  |      item4->setData(m_roleChnID, info.channelInfo.ChannelID);
 | 
	
		
			
				|  |  |      item4->setData(m_roleTemplateName, info.templateName);
 | 
	
		
			
				|  |  |      item4->setForeground(QBrush("#438EFF"));
 | 
	
	
		
			
				|  | @@ -335,7 +375,7 @@ void TemplateManager::deleteTemplate(QTableWidgetItem* item)
 | 
	
		
			
				|  |  |      m_listDeleteTemplate.append(info);
 | 
	
		
			
				|  |  |      /* 删除当前行 */
 | 
	
		
			
				|  |  |      ui->tableWidget->removeRow(item->row());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    m_listTemplate.removeOne(info);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* 预览 */
 |