config.cpp 11.4 KB
#include <QDebug>
#include <QDateTime>
#include <QFile>
#include <QIODevice>
#include "config.h"
#include "configdatetimedlg.h"
#include "configlanguagedlg.h"
#include "configtemptypedlg.h"
#include "configbacklightdlg.h"
#include "configtimeformatdlg.h"
#include "configresttimeformatdlg.h"
#include "configmastervolumedlg.h"
#include "configsoundselelectdlg.h"
#include "yesnopopupdlg.h"
#include "usbcheckpopupdlg.h"
#include "configipdlg.h"
#include "configfileprocessdlg.h"
#include "confighalfenergydlg.h"
#include "config1digitsetdlg.h"
#include "configdutywashdlg.h"

using namespace Define;

#define CONFIG_FILE_NAME    "/prime/config/config.ini"
#define FAVORITE_FILE_NAME "/prime/config/favorite.ini"

Config* Config::instance = NULL;

Config::Config(QObject *parent) : QObject(parent)
{
    memcpy(config_format,config_format_kr,MAX_CONFIG_COUNT*64);
    loadConfig();
//    m_setFavorite.insert(2);
//    m_setFavorite.insert(3);
//    m_setFavorite.insert(1);
//    QSetIterator<uint32_t> i = getConstBeginFavorite();
//    while(i.hasNext()){
//        temp = i.next();
//        qDebug() << temp;
//    }
//    while(i.hasPrevious()){
//        temp = i.previous();
//        qDebug() << temp;
//    }
}

Config::~Config(){

}

Config* Config::getInstance(QObject *parent){
    if(instance ==NULL){
        instance = new Config(parent);
    }
    return instance;
}

void Config::initConfig(){
    memset(configlist.data,0x00,MAX_CONFIG_COUNT * 4);
    configlist.items.language.d32=0;
    configlist.items.datetime.d32=0;
    configlist.items.temptype.d32=0;
    configlist.items.backlight.d32=7;
    configlist.items.stop_delay.d32=10;
    configlist.items.best_dish_weight.d32=0;
    configlist.items.party_dish_weight.d32=0;
    configlist.items.ilc_rack_number.d32=10;
    configlist.items.ilc_rack_sequnece.d32=0x30201;
    configlist.items.ilc_cook_wait_time.d32=30;
    configlist.items.cooktime_format.d32=0;
    configlist.items.time_type.d32=1;
    configlist.items.resttime_format.d32=0;
    configlist.items.marster_vol.d32=7;
    configlist.items.keypad_sound1.d32=0;
    configlist.items.keypad_sound2.d32=0;
    configlist.items.request_loadexec.d32=6;
    configlist.items.programstep_finish.d32=7;
    configlist.items.cooktime_finish.d32=8;
    configlist.items.stoperror_distinguish.d32=9;
    configlist.items.sound_factory_reset.d32=0;
    configlist.items.haccp_data_download.d32=0;
    configlist.items.info_data_download.d32=0;
    configlist.items.service_data_download.d32=0;
    configlist.items.program_download.d32=0;
    configlist.items.program_upload.d32=0;
    configlist.items.program_initialize.d32=0;
    configlist.items.ip.d32=0xC0A80002;
    configlist.items.gateway.d32=0xC0A80001;
    configlist.items.netmask.d32=0xffffff01;
    configlist.items.set_download.d32=0;
    configlist.items.set_upload.d32=0;
    configlist.items.set_half_energy.d32=0;
    configlist.items.set_auto_darkness.d32=5;
    configlist.items.set_ilc_cook_temphumi_ready.d32=0;
    configlist.items.set_load_ready.d32=5;
    configlist.items.duty_wash.d32=0;
    configlist.items.loading_door_monitoring.d32=0;
    configlist.items.cooking_door_monitoring.d32=0;
    configlist.items.software_info.d32=0;
    configlist.items.hotline_chef.d32=0;
    configlist.items.hotline_service.d32=0;
    configlist.items.steam_wash.d32=0;
    configlist.items.demo_mode.d32=0;
    configlist.items.enter_engineer_mode.d32=0;
    configlist.items.model.d32 = model_electric_20;
    qDebug() << "Init Config lists";
}

bool Config::saveConfig(void){
    char buff[sizeof(config_lists)+1];
    qint64 writelen;
    QFile file(CONFIG_FILE_NAME);+
    memcpy(buff, configlist.data, sizeof(config_lists));
    buff[sizeof(config_lists)] = 0x9C;
    if(file.open(QIODevice::WriteOnly)){
        writelen = file.write(buff,sizeof(config_lists)+1);
        file.close();
        if(writelen == (sizeof(config_lists)+1)){
            qDebug() << "config file saved";
            return true;
        }
    }
    qDebug() << "saving config file is fail!";
    return false;
}

bool Config::loadConfig(){
    char buff[sizeof(config_lists)+1];
    qint64 readlen;
    QFile file(CONFIG_FILE_NAME);
    initConfig();
    if(file.open(QIODevice::ReadOnly)){
        readlen = file.read(buff,sizeof(config_lists)+1);
        file.close();
        if(buff[sizeof(config_lists)] ==0x9c && readlen == (sizeof(config_lists)+1) ){
            memcpy(configlist.data,buff,sizeof(config_lists));
            qDebug() << "loading config file success";
        }
        else {
            qDebug()<<"loading config file fail";
            return true;
        }
    }
    else{
        saveConfig();
    }
    return false;
}


Define::config_item Config::getConfigValue(Define::ConfigType idx){
    return configlist.values[idx];
}



void Config::setConfigValue(Define::ConfigType idx, Define::config_item& itemdata){
    configlist.values[idx] = itemdata;
}


QString Config::getValueString(Define::ConfigType idx){
    QString qstrTemp="";
    if( (config_data_type[(uint32_t)idx] & 0x80) ==0){
        switch(config_data_type[(uint32_t)idx]){
        case 0:
            qstrTemp.sprintf(config_format[(uint32_t)idx], configlist.values[(uint32_t)idx].d32);
        break;
        case 1:
            qstrTemp.sprintf(config_format[(uint32_t)idx], configlist.values[(uint32_t)idx].f32);
            break;
        case 2:
            qstrTemp = tr(config_format[(uint32_t)idx]);
        case 3:
            qstrTemp.sprintf(config_format[(uint32_t)idx], configlist.values[(uint32_t)idx].d32+1);
            break;
        case 0x7f:
            qstrTemp = "";
        }
        return qstrTemp;
    }

    QDateTime qdt = QDateTime::currentDateTime();

    switch(idx){
        case config_language:
        if(configlist.items.language.d32 >=3) configlist.items.language.d32 = 0;
        qstrTemp = tr(language_menu[configlist.items.language.d32]);
        break;

    case config_datetime:
        qstrTemp = qdt.toString("yyyy.MM.dd hh:mm");
        break;

    case config_temptype:
        if(configlist.items.temptype.d32 >=2 ) configlist.items.temptype.d32 = 0;
        qstrTemp = tr(temptype_menu[configlist.items.temptype.d32]);
        break;
    case config_best_dish_weight:
        if(configlist.items.best_dish_weight.d32 >=4) configlist.items.best_dish_weight.d32 = 0;
        qstrTemp = tr(best_dish_weight_menu[configlist.items.best_dish_weight.d32]);
        break;
    case config_party_dish_weight:
        if(configlist.items.party_dish_weight.d32 >=4) configlist.items.party_dish_weight.d32 = 0;
        qstrTemp = tr(best_dish_weight_menu[configlist.items.party_dish_weight.d32]);
        break;
    case config_time_type:
        if(configlist.items.time_type.d32 >=2) configlist.items.time_type.d32 = 0;
        qstrTemp = tr(time_type_menu[configlist.items.time_type.d32]);
        break;
    case config_resttime_format:
        if(configlist.items.resttime_format.d32 >=2) configlist.items.resttime_format.d32 = 0;
        qstrTemp = tr(rest_time_type_menu[configlist.items.resttime_format.d32]);
        break;
    case config_ip:
        qstrTemp.sprintf("%3d.%3d.%3d.%3d", configlist.items.ip.d8.d8_0,configlist.items.ip.d8.d8_1,configlist.items.ip.d8.d8_2,configlist.items.ip.d8.d8_3);
    case config_set_half_energy:
        if(configlist.items.set_half_energy.d32 >=2) configlist.items.set_half_energy.d32 = 0;
        qstrTemp = tr(on_off_menu[configlist.items.set_half_energy.d32]);
        break;
    case config_duty_wash:
        if(configlist.items.duty_wash.d32 >=2) configlist.items.duty_wash.d32 = 0;
        qDebug() << "duty wash is "<<configlist.items.duty_wash.d32;
        qstrTemp = tr(active_on_off_menu[configlist.items.duty_wash.d32]);
        break;
    default:
        qstrTemp = "";
        break;
    }
    return qstrTemp;
}

QString Config::getTitleString(Define::ConfigType idx){
    QString strTemp ="";
    strTemp = tr(config_title[idx]);
    return strTemp;
}

bool Config::isFavorite(Define::ConfigType idx){
    return m_setFavorite.contains((uint32_t)idx);
    return true;
}

QSetIterator<uint32_t> Config::getConstBeginFavorite(){
    QSetIterator<uint32_t> i(m_setFavorite);
    return i;
}

QList<uint32_t> Config::getConstSortedFavorite(){
    QList<uint32_t> list = m_setFavorite.toList();
    qSort(list);
    return list;
}

bool Config::loadFavorite(void){

    return false;
}

bool Config::saveFavorite(void){
    return false;
}

void Config::insertFavorite(Define::ConfigType idx){
    m_setFavorite.insert((uint32_t)idx);
}
void Config::removeFavorite(Define::ConfigType idx){
    m_setFavorite.remove((uint32_t)idx);
}

QString Config::getDateTimeString(uint32_t sec){
    Config* ins = getInstance();
    QString strTemp="";
    if(ins->configlist.items.temptype.d32==0){

    }
    return strTemp;
}

QString Config::getTempString(int cel_temp){
    Config* ins = getInstance();
    QString strTemp="";
    if(ins->configlist.items.temptype.d32==0){

    }
    return strTemp;
}

void Config::execConfigWindow(QWidget *parent, Define::ConfigType idx){
    QDialog *dlg;
    bool bUsbDetect = false;
    switch(idx){
    case config_datetime:
        dlg = new ConfigDateTimeDlg(parent);
        break;
    case config_language:
        dlg = new ConfigLanguageDlg(parent);
        break;
    case config_temptype:
        dlg = new ConfigTempTypeDlg(parent);
        break;
    case config_backlight:
        dlg = new ConfigBackLightDlg(parent);
        break;
    case config_time_type:
        dlg = new ConfigTimeFormatDlg(parent);
        break;
    case config_resttime_format:
        dlg = new configResttimeFormatDlg(parent);
        break;
    case config_marster_vol:
        dlg = new ConfigMasterVolumeDlg(parent);
        break;
    case config_keypad_sound1:
    case config_keypad_sound2:
    case config_request_loadexec:
    case config_programstep_finish:
    case config_cooktime_finish:
    case config_stoperror_distinguish:
        dlg = new ConfigSoundSelelectDlg(parent,idx);
        break;
     case config_sound_factory_reset:
        dlg = new YesNoPopupDlg(parent, tr("모든 음향설정 값을 공장초기화\r하시겠습니까?"));
        break;
    case config_ip:
        dlg=new ConfigIpDlg(parent);
        break;
    case config_info_data_download:
    case config_service_data_download:
    case config_program_download:
    case config_set_download:
        if(!bUsbDetect){
            dlg = new UsbCheckPopupDlg(parent);
            dlg->exec();
        }
        dlg = new ConfigFileProcessDlg(parent,idx);
        dlg->exec();
        return;
    case config_set_upload:
    case config_program_upload:
        if(!bUsbDetect){
            dlg = new UsbCheckPopupDlg(parent);
            dlg->exec();
        }
        dlg = new ConfigFileProcessDlg(parent,idx,false);
        dlg->exec();
        return;
    case config_set_half_energy:
        dlg = new ConfigHalfEnergyDlg(parent);
        break;
     case config_set_auto_darkness:
        dlg = new Config1DigitSetDlg(parent,idx);
        break;
    case config_duty_wash:
        dlg = new ConfigDutyWashDlg(parent);
        break;
    default:
        dlg=NULL;
    }
    if(dlg == NULL) return;
    dlg->setWindowModality(Qt::WindowModal);
    dlg->exec();
    if(dlg->result() == QDialog::Accepted){
        qDebug()<<"Accepted";
        if(idx == config_sound_factory_reset){
            //Sound Fatory Reset
            qDebug() << "Process Sound Config Reset";
        }
    }
    else{
        qDebug() << "rejected";
    }
}