void SocketController::getPortStatusCountersList()
{
    if (!connectionLost)
    {
        QMetaObject::invokeMethod(portStatusCountersModel, "clear");
        QVariant retValue;
        //QString data = "1        0              0               0            0              0               0 \n2        0              0               0            0              0               0 \n3        0              0               0            0              0               0 \n4         0              0               0            0              0               0  \n5         0              0               0            0              0               0  \n6         0              0               0            0              0               0  \n7         0              0               0            0              0               0  \n8         0              0               0            0              0               0  \n";
        QString data = getParamInfo("PortStatusCountersList");

        if(data == emptyString)
        {
            logOutSignal();
            return;
        }

        PortStatusCountersParser* parser = new PortStatusCountersParser();
        PortStatusCountParseResult result;
        result = parser->parsePortStatusCountData(data);
        int portsCount = result.params[0].length();

        for(int i = 0; i < portsCount; i++)
        {
            QMetaObject::invokeMethod(portStatusCountersModel, "addPortStatusCounter",
                                      Q_RETURN_ARG(QVariant, retValue),
                                      Q_ARG(QVariant, result.params[result.columnIndexes["port"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["rx_packets_count"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["rx_bytes_count"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["error_count"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["tx_packets_count"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["tx_bytes_count"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["collisions"]].at(i)));
        }
    }
}
void SocketController::getPortStatusList()
{
    if (!connectionLost)
    {
        QMetaObject::invokeMethod(portStatusModel, "clear");
        QVariant retValue;
        //QString data = "1         Down              -               -            - \n2         Down              -               -            - \n3         Down              -               -            -   \n4         up              100M               Full            Off \n";
        QString data = getParamInfo("PortStatusList");

        if(data == emptyString)
        {
            logOutSignal();
            return;
        }

        PortStatusDataParser* parser = new PortStatusDataParser();
        PortStatusParseResult result;
        result = parser->parsePortStatusData(data);
        int portsCount = result.params[0].length();

        for(int i = 0; i < portsCount; i++)
        {
            QMetaObject::invokeMethod(portStatusModel, "addPortStatus",
                                      Q_RETURN_ARG(QVariant, retValue),
                                      Q_ARG(QVariant, result.params[result.columnIndexes["port"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["link"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["speed"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["duplex"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["flow_control"]].at(i)));
        }
    }
}
void SocketController::getPortSetupList()
{
    if (!connectionLost)
    {
        QMetaObject::invokeMethod(portSetupModel, "clear");
        QVariant retValue;
        //QString data = "1        Auto              On               On            Normal              -               \n2        Auto              On               On            Normal              -               \n3        Auto              On               On            Normal              -               \n4        Auto              On               On            Normal              -               \n5        Auto              On               On            Normal              -               \n6        Auto              On               On            Normal              -               \n7        Auto              On               On            Normal              -               \n8        Auto              On               On            Normal              -               \n";
        QString data = getParamInfo("PortSetupDataList");

        if(data == emptyString)
        {
            logOutSignal();
            return;
        }

        PortSetupDataParser* parser = new PortSetupDataParser();
        PortSetupParseResult result;
        result = parser->parsePortSetupData(data);
        int portsCount = result.params[0].length();

        for(int i = 0; i < portsCount; i++)
        {
            int modeIndex  = findIndexByValue(portSetupModeNameList,
                                              portSetupModeCount,
                                              result.params[result.columnIndexes["mode"]].at(i));
            int flowControlIndex = findIndexByValue(portSetupFlowControlNameList,
                                                    portSetupFlowControlCount,
                                                    result.params[result.columnIndexes["flow_control"]].at(i));
            int priority802Index = findIndexByValue(priority802NameList,
                                                    priority802Count,
                                                    result.params[result.columnIndexes["priority802"]].at(i));
            int portBasePriorityIndex = findIndexByValue(portBasePriorityNameList,
                                                         portBasePriorityCount,
                                                         result.params[result.columnIndexes["port_base_priority"]].at(i));
            QMetaObject::invokeMethod(portSetupModel, "addPortSetupData",
                                      Q_RETURN_ARG(QVariant, retValue),
                                      Q_ARG(QVariant, result.params[result.columnIndexes["port"]].at(i)),
                    Q_ARG(QVariant, modeIndex),
                    Q_ARG(QVariant, flowControlIndex),
                    Q_ARG(QVariant, priority802Index),
                    Q_ARG(QVariant, portBasePriorityIndex),
                    Q_ARG(QVariant, result.params[result.columnIndexes["port_description"]].at(i)));
        }
    }
}
void SocketController::getPortTrunkSetup()
{
    if (!connectionLost)
    {
        portTrunkStatusServerValue = getParamInfo("PortTrunkStatus");

        if (portTrunkStatusServerValue == emptyString)
        {
            logOutSignal();
            return;
        }

        //portTrunkStatusServerValue = "On";
        portTrunkStatusComboBox->setProperty("currentIndex",
                                             findIndexByValue(portTrunkStatusNameList, portTrunkStatusCount,
                                                              portTrunkStatusServerValue));
    }
}
void SocketController::getInfoAboutWifiConnections()
{
    if(!connectionLost)
    {
        QMetaObject::invokeMethod(wifiConnectionsModel, "clear");
        QVariant retValue;
        //QString data = "*  SSID             MODE   CHAN  RATE       SIGNAL  BARS  SECURITY \n   Promwad Devices  Infra  1     54 Mbit/s  100     ▂▄▆█  WPA2     \n   Promwad Guest    Infra  1     54 Mbit/s  100     ▂▄▆█  WPA2     \n   Promwad Test     Infra  1     54 Mbit/s  100     ▂▄▆█  WPA2     \n   AP-lo1-10        Infra  1     54 Mbit/s  65      ▂▄▆_  WPA2     \n";
        //QString data = "DEVICE  TYPE      STATE        CONNECTION \neth0   ethernet      notconnected    Wired Connection 0    \nwlan0   wifi      connected    eduroam    \neth1    ethernet  unavailable  --         \nlo      loopback  unmanaged    --         \n";
        //QString data = "DEVICE  TYPE      STATE        CONNECTION \nwlan0   wifi      connected    eduroam    \neth0    ethernet  unavailable  --         \nlo      loopback  unmanaged    --         \n";
        //QString data = "  SSID             MODE   CHAN  RATE       SIGNAL  BARS  SECURITY  \n    Promwad  Infra  1     54 Mbit/s 100     ▂▄▆█  WPA2     \n   *         Promwad Guest    Infra  1     54 Mbit/s  100     ▂▄▆█  WPA2     \n *  Promwad Test     Infra  1     54 Mbit/s  100     ▂▄▆█  WPA2      \n   AP-lo1-10        Infra  1     54 Mbit/s  65      ▂▄▆_  WPA2";
        QString data = getParamInfo("WifiConnections");

        if(data == emptyString)
        {
            logOutSignal();
            return;
        }

        WifiDataParser* parser = new WifiDataParser();
        WifiInfoParseResult result;
        result = parser->parseWifiConnectionsInfo(data);
        QVariant varParams;
        varParams.setValue<QList<int>>(result.connectedIndexes);
        QMetaObject::invokeMethod(availableWifiSubtab, "addWifiConnectedIndexes",
                                  Q_RETURN_ARG(QVariant, retValue),
                                  Q_ARG(QVariant, varParams));
        int networksCount = result.params[0].length();

        for(int i = 0; i < networksCount; i++)
        {
            bool isConnected = result.connectedIndexes.contains(i);
            QMetaObject::invokeMethod(wifiConnectionsModel, "addWifiConnection",
                                      Q_RETURN_ARG(QVariant, retValue),
                                      Q_ARG(QVariant, result.params[result.columnIndexes["ssid"]].at(i)),
                    Q_ARG(QVariant, isConnected),
                    Q_ARG(QVariant, result.params[result.columnIndexes["rate"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["bars"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["security"]].at(i)));
        }
    }
}
void SocketController::getPoeSetupList()
{
    if (!connectionLost)
    {
        QMetaObject::invokeMethod(poeSetupModel, "clear");
        QVariant retValue;
        //QString data = "1        On              0               0            15,4              0               \n2       On              0               0            15,4              0              \n3        On              0               0            15,4              0              \n4       On              0               0            15,4              0              \n5       On              0               0            15,4              0               \n6       On              0               0            15,4              0                \n7       On              0               0            15,4              0               \n8        On              0               0            15,4              0              \n";
        QString data = getParamInfo("PoeSetupDataList");
        PoeSetupDataParser* parser = new PoeSetupDataParser();

        if(data == emptyString)
        {
            logOutSignal();
            return;
        }

        PoeSetupParseResult result;
        result = parser->parsePoeSetupData(data);
        int portsCount = result.params[0].length();

        for(int i = 0; i < portsCount; i++)
        {
            int statusIndex  = findIndexByValue(poeSetupStatusNameList,
                                                poeSetupStatusCount,
                                                result.params[result.columnIndexes["status"]].at(i));
            int priorityIndex = findIndexByValue(poeSetupPriorityNameList,
                                                 poeSetupPriorityCount,
                                                 result.params[result.columnIndexes["priority"]].at(i));
            QMetaObject::invokeMethod(poeSetupModel, "addPoeSetupData",
                                      Q_RETURN_ARG(QVariant, retValue),
                                      Q_ARG(QVariant, result.params[result.columnIndexes["port"]].at(i)),
                    Q_ARG(QVariant, statusIndex),
                    Q_ARG(QVariant, result.params[result.columnIndexes["delivering_power"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["current_ma"]].at(i)),
                    Q_ARG(QVariant, result.params[result.columnIndexes["power_limit_w"]].at(i)),
                    Q_ARG(QVariant, priorityIndex));
        }
    }
}
void CustomerMenuForm::on_pushButton_3_clicked()
{
    emit logOutSignal();
    changeWindow(CustomerMenu, Login);
}
void SocketController::getVlanSettings()
{
    if (!connectionLost)
    {
        vlanSubtab->setProperty("init", true);
        vlanTabId->setProperty("init", true);
        //QString vlanType =  "portBased";//"802.1q";//
        QString vlanType = getParamInfo("VlanType");

        if(vlanType == emptyString)
        {
            logOutSignal();
            return;
        }

        vlanTypeComboBox->setProperty("currentIndex",
                                      findIndexByValue(vlanTypeList, vlanTypeCount,
                                                       vlanType));

        if(vlanType != "noVlan")
        {
            //portCount = 8;
            QString portCountStr = getParamInfo("PortCount");

            if(portCountStr == emptyString)
            {
                logOutSignal();
                return;
            }

            portCount = portCountStr.toInt();

            QVariant retValue;
            QMetaObject::invokeMethod(vlanCurrentModel, "init",
                                      Q_RETURN_ARG(QVariant, retValue),
                                      Q_ARG(QVariant, portCount),
                                      Q_ARG(QVariant, vlanCount));

            portRepeater->setProperty("model", portCount);

            QMetaObject::invokeMethod(vlanCurrentModel, "deleteAllChecks",
                                      Q_RETURN_ARG(QVariant, retValue));

            VlanSettingsParser* parser = new VlanSettingsParser();


            QString portVlanData = getParamInfo("VlanSettings");
            // QString portVlanData = "1 1\n2 1\n3 1\n1 3\n4 2\n5 2\n6 2\n7 3\n8 3\n";//

            if(portVlanData == emptyString)
            {
                logOutSignal();
                return;
            }

            QList<QPair<int, int>> portVlanDataResult = parser->parsePortVlanData(portVlanData);

            for (int i = 0; i < portVlanDataResult.count(); i++)
            {
                QPair<int, int> portVlanPair = portVlanDataResult.at(i);
                QMetaObject::invokeMethod(vlanCurrentModel, "addPortVlanEnabled",
                                          Q_RETURN_ARG(QVariant, retValue),
                                          Q_ARG(QVariant, portVlanPair.first),
                                          Q_ARG(QVariant, portVlanPair.second));
            }

            //QString portPvidData = "1 1\n2 2\n3 3\n4 4\n5 5\n6 6\n7 7\n8 8\n"; //
            QString portPvidData = getParamInfo("PortsPvid");

            if(portPvidData == emptyString)
            {
                logOutSignal();
                return;
            }

            QMap<int, int> portPvidDataResult = parser->parsePortPvidData(portPvidData);

            for(int port = 1; port <= portCount; port++)
            {
                QMetaObject::invokeMethod(vlanCurrentModel, "setPortPvid",
                                          Q_RETURN_ARG(QVariant, retValue),
                                          Q_ARG(QVariant, port),
                                          Q_ARG(QVariant, portPvidDataResult[port]));
            }

            if (vlanType == "802.1q")
            {
                //QString portTaggingData = "1 On\n2 Off\n3 On\n4 On\n5 On\n6 On\n7 On\n8 On\n";//
                QString portTaggingData = getParamInfo("PortsTaggingStatus");

                if(portTaggingData == emptyString)
                {

                    logOutSignal();
                    return;
                }

                QMap<int, QString> portTaggingDataResult = parser->parsePortTaggingData(portTaggingData);

                for(int port = 1; port <= portCount; port++)
                {
                    QMetaObject::invokeMethod(vlanCurrentModel, "setPortTaggingStatus",
                                              Q_RETURN_ARG(QVariant, retValue),
                                              Q_ARG(QVariant, port),
                                              Q_ARG(QVariant, findIndexByValue(portTaggingStatusList,
                                                                               portTaggingStatusCount,
                                                                               portTaggingDataResult[port])));
                }
            }
        }

        vlanSubtab->setProperty("init", false);
        vlanTabId->setProperty("init", false);
    }
}