#include "TransmitterSwitchInfo.h"




ExecPlanItemInfo::ExecPlanItemInfo()
{
    ExecType = -1;
    WeekDay = 0;
    // num = -1;
    date = QDate::fromString("1970-01-01","yyyy-MM-dd");
    execTime = QTime::fromString("00:00:00","hh:mm:ss");
    devName = "未定义";
    actionID = 0;
    actionName = "未定义";
}

ExecPlanItemInfo::ExecPlanItemInfo(const ExecPlanItemInfo& item)
{
    ExecType = item.ExecType;
    WeekDay = item.WeekDay;
    date = item.date;
    execTime = item.execTime;
    actionID = item.actionID;
    devName = item.devName;
    actionName = item.actionName;
}

ExecPlanItemInfo& ExecPlanItemInfo::operator=(const ExecPlanItemInfo& item)
{
    if(this == &item)
        return *this;
    ExecType = item.ExecType;
    WeekDay = item.WeekDay;
    // num = item.num;
    date = item.date;
    execTime = item.execTime;
    devName = item.devName;
    actionID = item.actionID;
    actionName = item.actionName;
    // dateType = item.dateType;
    // cfgDev = item.cfgDev;
    return *this;
}



DevTypeInfo::DevTypeInfo()
{
    devTypeName = "";
    devAction.clear();
    devType_MB.clear();
    PTTypeCode = -1;
}

DevTypeInfo& DevTypeInfo::operator=(const DevTypeInfo& devInfo)
{
    devTypeName = devInfo.devTypeName;
    devAction = devInfo.devAction;
    devType_MB = devInfo.devType_MB;
    PTTypeCode = devInfo.PTTypeCode;
    return *this;
}


MapDevType::MapDevType()
{
    initDevType();
}

/* 添加支持的设备类型 */
void MapDevType::initDevType()
{
    /* 955发射机 */
    DevTypeInfo devInfo;
    devInfo.devTypeName = "衢州台发射机";
    devInfo.PTTypeCode = 955;
    devInfo.devAction[1] = "开机";
    devInfo.devAction[2] = "关机";
    devInfo.devType_MB.insert(enum_DeviceMB::Dev_Main,"主");
    devInfo.devType_MB.insert(enum_DeviceMB::Dev_Backup,"备");
    devInfo.devType_MB.insert(enum_DeviceMB::Dev_Contingency,"应急");
    m_mapDevType.insert(955, devInfo);

    /* 其他发射机 */
}

/* 获取某一个发射机类型 */
DevTypeInfo MapDevType::getDevType(int PTTypeCode)
{
    if(m_mapDevType.contains(PTTypeCode))
    {
        return m_mapDevType[PTTypeCode];
    }
    return DevTypeInfo();
}


DeviceInfo::DeviceInfo()
{
    devName = "未定义";
    PTTypeCode = -1;
    DevType = DevTypeInfo();
    DTID = 0;
    DID = 0;
    ChannelID = 0;
}

DeviceInfo::DeviceInfo(const DeviceInfo& devInfo)
{
    devName = devInfo.devName;
    PTTypeCode = devInfo.PTTypeCode;
    DevType = devInfo.DevType;
    DTID = devInfo.DTID;
    DID = devInfo.DID;
    ChannelID = devInfo.ChannelID;
}

DeviceInfo& DeviceInfo::operator=(const DeviceInfo& devInfo)
{
    devName = devInfo.devName;
    PTTypeCode = devInfo.PTTypeCode;
    DevType = devInfo.DevType;
    DTID = devInfo.DTID;
    DID = devInfo.DID;
    ChannelID = devInfo.ChannelID;
    return *this;
}


MapDevice::MapDevice()
{

}

/* 添加一个设备 */
void MapDevice::addDevice(const DeviceInfo& devInfo)
{
    /* 先查重 */
    if(m_mapDevice.contains(devInfo.devName))
    {
        return;
    }
    m_mapDevice.insert(devInfo.devName, devInfo);
}

/* 获取一个设备 */
DeviceInfo MapDevice::getDevice(const QString& devName)
{
    if(m_mapDevice.contains(devName))
    {
        return m_mapDevice[devName];
    }
    return DeviceInfo();
}

/* 查找一个设备 */
bool MapDevice::findDevice(const QString& devName)
{
    return m_mapDevice.contains(devName);
}

/* 根据设备名称获取设备动作 */
bool MapDevice::getDevAction(const QString& devName, QMap<int, QString>& devAction)
{
    if(m_mapDevice.contains(devName))
    {
        devAction = m_mapDevice[devName].DevType.devAction;
        return true;
    }
    return false;
}

/* 删除一个设备 */
void MapDevice::deleteDevice(const QString& devName)
{
    if(m_mapDevice.contains(devName))
    {
        m_mapDevice.remove(devName);
    }
}