#include "window_settings_emt_kr.h" #if (USE_DEVICE_SETTINGS && !USE_DEVICE_SETTINGS_JSON && RM_MODEL_EMT_KR) #include "../fm_dimensions.h" #include "../ui/title_widget.h" #include "rm_combo_box.h" #include "rm_radio_buttons.h" #include "rm_group_combo_box.h" #include "rm_group_radio_buttons.h" #include "rm_text_edit.h" //#include "rm_setting_time.h" #include #include #include #include #include #include "rm_settings_cfg_emt_kr.h" #if (DETECT_SETTING_USB_EJECT) #include "../core/rm_usb.h" #include "../rm_application.h" #endif // 문자열 처리 UTF // https://www.branah.com/unicode-converter const int gComboBoxWidth = 200; const int gTitleWidth = 50; const int defaultHeight = 55; const int subHeight = 30; WindowSettings::WindowSettings(QWidget *parent) : RMSettingsWindowBase(parent) { QWidget* row = NULL; QVBoxLayout* rowLayout = _createRow(&row); _createRowS(row,rowLayout,CFG::items,0,200); _refresh(CFG::items,0); } void WindowSettings::afterSave() { } bool WindowSettings::validateData() { return true; } QStringList WindowSettings::_valueStrings(QJsonObject& object,const char* key) { QStringList ret = QStringList(); if(object.contains(key)) { QJsonArray array = object.value(key).toArray(); for(int i=0;i WindowSettings::_valueIndices(QJsonObject& object,const char* key) { QList ret = QList(); if(object.contains(key)) { QJsonArray array = object.value(key).toArray(); for(int i=0;i(obj); if(combo != NULL) { return combo->comboBox->currentIndex(); } else { RMRadioButtons* radios = qobject_cast(obj); if(radios != NULL) { return radios->currentIndex(); } } return -1; } void WindowSettings::_refresh(QJsonArray items,int depth) { for(int i=0;isetFixedHeight(160); g->setObjectName("settings"); playout->addWidget(g); g->setTitle(title); QLayout *gg = NULL; if(!obj.contains("no_grid")) { QGridLayout* gl = new QGridLayout(g); gl->setMargin(8); gl->setSpacing(4); gg = gl; } else { QVBoxLayout* gl = new QVBoxLayout(g); gl->setMargin(8); gl->setSpacing(4); gg = gl; } int vcw = value_column_width; if(obj.contains("value_column_width")) { vcw = obj.value("value_column_width").toInt(value_column_width); } _createRowS(g,gg,obj.value("items").toArray(),depth+1,vcw); } else if(obj.contains("control")) { QString ctype = obj.value("control").toString(); if(ctype == "radio" || ctype == "combo") { if (!obj.contains("value_strings") || !obj.contains("offset")) { qInfo() << "ERROR ITEM:" << obj << __FUNCTION__; continue; } QStringList items = _valueStrings(obj,"value_strings"); // .value("value_strings").toArray() int offset = obj.value("offset").toInt(); QList indexMap = QList(); if(obj.contains("values")) { indexMap = _valueIndices(obj,"values"); } QLabel* titleLabel = NULL; if(ctype == "radio") { RMRadioButtons* rrb = NULL; if(depth == 0 || obj.contains("group_box")) { RMGroupRadioButtons* rb = _MGR(parent,title,playout,items,offset,indexMap); rb->setFixedHeight(defaultHeight); rrb = rb->radioButtons; } else { rrb = _MR(parent,title,playout,items,offset,indexMap,&titleLabel); rrb->setFixedHeight(subHeight); rrb->setFixedWidth(value_column_width); //titleLabel->setFixedWidth(100); } keyObject = rrb; if(obj.contains("events")) { connect(rrb,SIGNAL(selected(int)),SLOT(onSelected(int))); } if(obj.contains("disabled")) { rrb->setEnabled(false); } } else { RMComboBox* ccb = NULL; if(depth == 0 || obj.contains("group_box")) { RMGroupComboBox* cb = _MGC(parent,title,playout,items,offset,indexMap); cb->comboBox->setFixedWidth(gComboBoxWidth); cb->setFixedHeight(defaultHeight); ccb = cb->comboBox; } else { ccb = _MC(parent,title,playout,items,offset,indexMap,&titleLabel); ccb->setFixedHeight(subHeight); ccb->setFixedWidth(value_column_width); //titleLabel->setFixedWidth(100); } keyObject = ccb; if(obj.contains("events")) { connect(ccb,SIGNAL(selected(int)),SLOT(onSelected(int))); } if(obj.contains("disabled")) { //qInfo() << "disabled" << title << __FUNCTION__; ccb->setEnabled(false); } } } } if(keyObject != NULL) { _controlByNames.insert(key,keyObject); _controlByObjects.insert(keyObject,key); // 이벤트 추가 if(obj.contains("events")) { QStringList eventList = _valueStrings(obj,"events"); // QJsonArray events = obj.value("events").toArray(); // QStringList eventList = QStringList(); // for(int e=0;e(sender); if(combo != NULL) { combo->comboBox->setCurrentIndex(index); } else { RMRadioButtons* radios = qobject_cast(sender); if(radios != NULL) { radios->setCurrentIndex(index); } } } void WindowSettings::_setObjectEnable(QObject* sender, bool enabled) { RMComboBox* combo = qobject_cast(sender); if(combo != NULL) { combo->setEnabled(enabled); } else { RMRadioButtons* radios = qobject_cast(sender); if(radios != NULL) { radios->setEnabled(enabled); } } } void WindowSettings::_processUpdateOtherEvent(QString& key, QString& event, int index) { Q_UNUSED(index) Q_UNUSED(key) QStringList args = event.split(","); if(args.size() < 2) { return; } //qInfo() << "key:" << key << __FUNCTION__; // SD_OMAKASE의 항목을 확인하여 QString target = args.at(1); // = SD_OMAKASE QObject* tt = _controlByNames.value(target); // 프리셋 컨트롤 // "UPDATEVALUES,0,SD_DRIVERECMODE=0,SD_PARKINGRECMODE=4,SD_VIDEOQUALITY=1,SD_VIDEOFRAME=1", // "UPDATEVALUES,1,SD_DRIVERECMODE=0,SD_PARKINGRECMODE=1,SD_VIDEOQUALITY=2,SD_VIDEOFRAME=1", // "UPDATEVALUES,2,SD_DRIVERECMODE=0,SD_PARKINGRECMODE=3,SD_VIDEOQUALITY=0,SD_VIDEOFRAME=0" QStringList targetEvents = _controlEvents.value(tt); for(int e=0;e 0 _setObjectIndex(tt,foundIndex); return; } } // 발견된 조합이 없을 경우 NOT_FOUND 확인 (VERIFYVALUES_BY,SD_OMAKASE,NOT_FOUND=4) if(args.size() >= 3) { QString nf = args.at(2); if(nf.startsWith("NOT_FOUND")) { int idx = nf.split("=").at(1).toInt(); //QObject* tt = _controlByNames.value(target); _setObjectIndex(tt,idx); } } //qInfo() << args << __FUNCTION__; } void WindowSettings::_processUpdateEvent(QString& key, QString& event, int index) { Q_UNUSED(key) QStringList args = event.split(","); // 업데이트 명령일 경우 if(args[1].toInt() != index) { return; } // 각 업데이트 확인 for(int a=2;acontentsMargins().left() - _contentScrollLayout->contentsMargins().right() - _contentScrollLayout->spacing() - 20; *rw = new QWidget(_contentScrollWidget); (*rw)->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); (*rw)->setFixedWidth(width / 2); _contentScrollLayout->addWidget(*rw); _contentScrollLayout->setAlignment(Qt::AlignTop); QVBoxLayout* l = new QVBoxLayout(*rw); l->setMargin(0); l->setSpacing(10); l->setAlignment(Qt::AlignTop); return l; } WindowSettings::~WindowSettings() { } #endif // #if (USE_DEVICE_SETTINGS) //#endif // #if (RM_MODEL == RM_MODEL_TYPE_CS_32FH)