configinfodlg.cpp 5.48 KB
#include <QMap>
#include <QLabel>
#include <QDebug>
#include "configinfodlg.h"
#include "ui_configinfodlg.h"
#include "soundplayer.h"
#include "config.h"

#define MODEL_INFO_FILE_NAME "/prime/config/model_info.txt"
#define CHEF_INFO_FILE_NAME "/prime/config/chef_info.txt"
#define SERVICE_INFO_FILE_NAME "/prime/config/service_info.txt"

static const char* g_strModelTypeName[] ={
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "전기식 10단"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "전기식 20단"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "전기식 24단"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "전기식 40단"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 10단 LPG"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 20단 LPG"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 24단 LPG"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 40단 LPG"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 10단 LNG"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 20단 LNG"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 24단 LNG"),
    QT_TRANSLATE_NOOP("ConfigInfoDlg", "가스식 40단 LNG")
};



ConfigInfoDlg::ConfigInfoDlg(QWidget *parent, ConfigType type) :
    QDialog(parent),
    ui(new Ui::ConfigInfoDlg)
{
    Config* cfg = Config::getInstance();
    ui->setupUi(this);
    this->setWindowFlags( Qt::FramelessWindowHint);
    this->setAttribute( Qt::WA_DeleteOnClose);
    qApp->setActiveWindow(this);
    this->setFocus();

    foreach (QPushButton *button, findChildren<QPushButton *>())
        connect(button, &QPushButton::pressed, SoundPlayer::playClick);

    m_nType = type;

    ui->ctrTitle->setText(cfg->getTitleString(type));

    switch(type){
    case config_hotline_chef:
        loadHotlineChefInfo();
        break;
    case config_hotline_service:
        loadHotlineServiceInfo();
        break;
    case config_software_info:
    default:
        loadSoftwareInfo();
        break;
    }
    ui->ctrBtnOk->setFocus();
}

ConfigInfoDlg::~ConfigInfoDlg()
{
    delete ui;
}

void ConfigInfoDlg::on_ctrBtnOk_clicked()
{
    deleteLater();
}

bool ConfigInfoDlg::readFromInfoFile(QMap<QString, QString> &info_map, const QString &filename){
    QFile file(filename);
    QString label,value;
    qDebug() << "orgin size " << info_map.size();
    if(file.open(QIODevice::ReadOnly | QIODevice::Text)){
        while(!file.atEnd()){
            QString line = QString::fromUtf8(file.readLine());
            info_map[line.section(',',0,0)] = line.section(',',1,1);
        }
        qDebug() << file.fileName() << "read OK!";
        qDebug() << "final size " << info_map.size();
        return true;
    }
    else {
        qDebug() << file.fileName() + " file not found";
    }
    return false;
}


void ConfigInfoDlg::loadSoftwareInfo(){
    Config* cfg = Config::getInstance();
    QString strTemp;
    QMap<QString , QString> mapInfos;
    QLabel* label;



//Default Value;
    mapInfos[tr("모  델  명")] = "PRIME ST-01";
    mapInfos[tr("제조일자")] = "2017-06";
    mapInfos[tr("제조국")] = "Korea";
    mapInfos[tr("제조사")] = "프라임";
    mapInfos[tr("제품번호")] = "01";
    mapInfos[tr("소프트웨어 버전")] ="0.1 BETA";

    mapInfos[tr("현재모델")] =  tr(g_strModelTypeName[cfg->getConfigValue(Define::config_model).d32]);

    readFromInfoFile(mapInfos, QString(MODEL_INFO_FILE_NAME));

    for(int i =0;i<MAX_SOFTWARE_INFO_CNT;i++){
        strTemp = mapInfos[tr(software_item_name[i])];
        label = new QLabel(this);
        label ->setText(tr(software_item_name[i]).append(" :"));
        ui->gridLayout_info->addWidget(label,i,0);
        label = new QLabel(this);
        label->setText(strTemp);
        ui->gridLayout_info->addWidget(label,i,1);
    }
}

void ConfigInfoDlg::loadHotlineChefInfo(){
    QString strTemp;
    QMap<QString , QString> mapInfos;
    QLabel* label;


//Default Value;
    mapInfos[tr("연 락 처")] = "010-3004-6517";
    mapInfos[tr("이       름")] = "김성우";
    mapInfos[tr("위치정보")] ="인천광역시 남동구 남동동로 34번길 56";

    readFromInfoFile(mapInfos, QString(CHEF_INFO_FILE_NAME));

    for(int i =0;i<MAX_HOTLINE_CHEF_CNT;i++){
        strTemp = mapInfos[tr(hotline_chef_item_name[i])];
        label = new QLabel(this);
        label ->setText(tr(hotline_chef_item_name[i]).append(":"));
        ui->gridLayout_info->addWidget(label,i,0);
        label = new QLabel(this);
        label->setText(strTemp);
        ui->gridLayout_info->addWidget(label,i,1);
    }
}

void ConfigInfoDlg::loadHotlineServiceInfo(){
    QString strTemp;
    QMap<QString , QString> mapInfos;
    QLabel* label;

//Default Value
    mapInfos[tr("연 락 처")] = "1644-9533";
    mapInfos[tr("위치정보")] ="인천광역시 남동구 남동동로 34번길 56";

    readFromInfoFile(mapInfos, SERVICE_INFO_FILE_NAME);

    for(int i =0;i<MAX_HOTLINE_SERVICE_CNT;i++){
        strTemp = mapInfos[tr(hotline_service_item_name[i])];
        label = new QLabel(this);
        label ->setText(tr(hotline_service_item_name[i]).append(":"));
        ui->gridLayout_info->addWidget(label,i,0);
        label = new QLabel(this);
        label->setText(strTemp);
        ui->gridLayout_info->addWidget(label,i,1);
    }
}

void ConfigInfoDlg::keyPressEvent(QKeyEvent *event){

}

void ConfigInfoDlg::keyReleaseEvent(QKeyEvent *event){
    switch (event->key())
    {
    case 0x01000031:    // Push
    {
        QPushButton *btn = qobject_cast<QPushButton*>(focusWidget());
        if(btn != NULL){
            btn->click();
        }
        break;
    }
    }
}