Commit a7905269da91355ae5ac8cf920a35d122db536d8

Authored by 고영탁
1 parent 453d18662f
Exists in master and in 2 other branches fhd, fhd-demo

설정 메뉴 화면 기본 구조 완성

- 설정 메뉴 화면 기본 구조 완성
app/gui/oven_control/config.cpp
1 #include <QDebug> 1 #include <QDebug>
  2 +#include <QDateTime>
2 #include "config.h" 3 #include "config.h"
3 4
4 using namespace Define; 5 using namespace Define;
@@ -63,11 +64,45 @@ QString Config::getValueString(Define::ConfigType idx){ @@ -63,11 +64,45 @@ QString Config::getValueString(Define::ConfigType idx){
63 case 1: 64 case 1:
64 qstrTemp.sprintf(config_format[(uint32_t)idx], configlist.values[(uint32_t)idx].f32); 65 qstrTemp.sprintf(config_format[(uint32_t)idx], configlist.values[(uint32_t)idx].f32);
65 break; 66 break;
  67 + case 2:
  68 + qstrTemp = tr(config_format[(uint32_t)idx]);
66 } 69 }
  70 + return qstrTemp;
67 } 71 }
  72 +
  73 + QDateTime qdt = QDateTime::currentDateTime();
  74 +
68 switch(idx){ 75 switch(idx){
69 case config_language: 76 case config_language:
70 - qstrTemp = tr(language_menu[configlist.items.language.d32]); 77 + if(configlist.items.language.d32 >=3) configlist.items.language.d32 = 0;
  78 + qstrTemp = tr(language_menu[configlist.items.language.d32]);
  79 + break;
  80 +
  81 + case config_datetime:
  82 + qstrTemp = qdt.toString("yyyy.MM.dd hh:mm");
  83 + break;
  84 +
  85 + case config_temptype:
  86 + if(configlist.items.temptype.d32 >=2 ) configlist.items.temptype.d32 = 0;
  87 + qstrTemp = tr(temptype_menu[configlist.items.temptype.d32]);
  88 + break;
  89 + case config_best_dish_weight:
  90 + if(configlist.items.best_dish_weight.d32 >=4) configlist.items.best_dish_weight.d32 = 0;
  91 + qstrTemp = tr(best_dish_weight_menu[configlist.items.best_dish_weight.d32]);
  92 + break;
  93 + case config_party_dish_weight:
  94 + if(configlist.items.party_dish_weight.d32 >=4) configlist.items.party_dish_weight.d32 = 0;
  95 + qstrTemp = tr(best_dish_weight_menu[configlist.items.party_dish_weight.d32]);
  96 + break;
  97 + case config_time_type:
  98 + if(configlist.items.time_type.d32 >=2) configlist.items.time_type.d32 = 0;
  99 + qstrTemp = tr(time_type_menu[configlist.items.time_type.d32]);
  100 + break;
  101 + case config_resttime_format:
  102 + if(configlist.items.resttime_format.d32 >=2) configlist.items.resttime_format.d32 = 0;
  103 + qstrTemp = tr(rest_time_type_menu[configlist.items.resttime_format.d32]);
  104 + break;
  105 + default:
71 break; 106 break;
72 } 107 }
73 return qstrTemp; 108 return qstrTemp;
app/gui/oven_control/config.h
@@ -8,7 +8,7 @@ @@ -8,7 +8,7 @@
8 #define STRUCT_PACK __attribute__ ((packed)) 8 #define STRUCT_PACK __attribute__ ((packed))
9 9
10 10
11 -#define MAX_CONFIG_COUNT 14 11 +#define MAX_CONFIG_COUNT 21
12 12
13 namespace Define 13 namespace Define
14 { 14 {
@@ -27,6 +27,14 @@ namespace Define @@ -27,6 +27,14 @@ namespace Define
27 config_time_type, 27 config_time_type,
28 config_resttime_format, 28 config_resttime_format,
29 config_marster_vol, 29 config_marster_vol,
  30 + config_keypad_sound1,
  31 + config_keypad_sound2,
  32 + config_request_loadexec,
  33 + config_programstep_finish,
  34 + config_cooktime_finish,
  35 + config_stoperror_distinguish,
  36 + config_sound_factory_reset,
  37 + config_invalid = 65535
30 }; 38 };
31 39
32 typedef union _config_item{ 40 typedef union _config_item{
@@ -58,6 +66,13 @@ namespace Define @@ -58,6 +66,13 @@ namespace Define
58 config_item time_type; 66 config_item time_type;
59 config_item resttime_format; 67 config_item resttime_format;
60 config_item marster_vol; 68 config_item marster_vol;
  69 + config_item keypad_sound1;
  70 + config_item keypad_sound2;
  71 + config_item request_loadexec;
  72 + config_item programstep_finish;
  73 + config_item cooktime_finish;
  74 + config_item stoperror_distinguish;
  75 + config_item sound_factory_reset;
61 }items; 76 }items;
62 }STRUCT_PACK config_lists; 77 }STRUCT_PACK config_lists;
63 } 78 }
@@ -79,15 +94,39 @@ class Config : public QObject @@ -79,15 +94,39 @@ class Config : public QObject
79 "English" 94 "English"
80 }; 95 };
81 96
  97 + const char temptype_menu[2][16]{
  98 + "섭씨(℃)\0",
  99 + "화씨(℉)\0"
  100 + };
  101 +
  102 + const char best_dish_weight_menu[4][16]={
  103 + "700g\0",
  104 + "700-899g\0",
  105 + "900-1099g\0",
  106 + "1100g"
  107 + };
  108 +
  109 + const char time_type_menu[2][16]={
  110 + "24h\0",
  111 + "am/pm\0"
  112 + };
  113 +
  114 + const char rest_time_type_menu[2][16] = {
  115 + "잔여시간\0",
  116 + "타겟시간\0"
  117 + };
82 118
83 - /* config_data_type Description  
84 - * 80 = Custom 119 +
  120 +
  121 + /* config_data_type & Formatter Description
  122 + * 80 = use Cutom Formatter
85 * 0 = int 123 * 0 = int
86 * 1 = float 124 * 1 = float
  125 + * 2 = only String,
87 */ 126 */
88 const uint8_t config_data_type[MAX_CONFIG_COUNT] = { 127 const uint8_t config_data_type[MAX_CONFIG_COUNT] = {
89 - 0x80, 0x80, 0x80, 0, 0, 0, 0, 0, 0, 0,  
90 - 0x80,0x80,0x80,0 128 + 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, //Settings
  129 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02
91 }; 130 };
92 131
93 const char config_format_kr[MAX_CONFIG_COUNT][64]={ 132 const char config_format_kr[MAX_CONFIG_COUNT][64]={
@@ -101,10 +140,17 @@ class Config : public QObject @@ -101,10 +140,17 @@ class Config : public QObject
101 "%d", 140 "%d",
102 "%d", 141 "%d",
103 "%d min", //9 142 "%d min", //9
  143 + "%S", //10
104 "%S", 144 "%S",
105 - "%S",  
106 - "%S",  
107 - "%d" 145 + "%S", //end of Settings
  146 + "%d" ,//start of Sound
  147 + "%d번",
  148 + "%d번",
  149 + "%d번",
  150 + "%d번",
  151 + "%d번",
  152 + "%d번",
  153 + "공장초기화"
108 }; 154 };
109 155
110 char config_format[MAX_CONFIG_COUNT][64]; 156 char config_format[MAX_CONFIG_COUNT][64];
@@ -119,11 +165,18 @@ class Config : public QObject @@ -119,11 +165,18 @@ class Config : public QObject
119 "연회용 접시무게", 165 "연회용 접시무게",
120 "ILC 조리선반 개수", 166 "ILC 조리선반 개수",
121 "ILC 조리선반 순서", 167 "ILC 조리선반 순서",
122 - "ILC 조리 온습도 대기시간", //9  
123 - "조리시간 포맷", 168 + "ILC 조리 온습도 대기시간",
  169 + "조리시간 포맷", //10
124 "실시간 포맷", 170 "실시간 포맷",
125 - "잔여시간 포맷",  
126 - "마스터 볼륨" 171 + "잔여시간 포맷", //12
  172 + "마스터 볼륨", //13
  173 + "키패드 소리 - 1",
  174 + "키패드 소리 - 2 ", //15
  175 + "프로그램 단계 종료",
  176 + "적재/실행 요청",
  177 + "조리시간 종료",
  178 + "과정 중단/오류 식별", //19
  179 + "음향설정 초기화" //20
127 }; 180 };
128 181
129 QSet<uint32_t> m_setFavorite; 182 QSet<uint32_t> m_setFavorite;
@@ -152,8 +205,6 @@ public: @@ -152,8 +205,6 @@ public:
152 205
153 Define::config_lists configlist; 206 Define::config_lists configlist;
154 207
155 -  
156 -  
157 signals: 208 signals:
158 209
159 public slots: 210 public slots:
app/gui/oven_control/configwindow.cpp
@@ -3,30 +3,45 @@ @@ -3,30 +3,45 @@
3 3
4 #include "functiontestwindow.h" 4 #include "functiontestwindow.h"
5 #include "engineermenuwindow.h" 5 #include "engineermenuwindow.h"
  6 +#include "config.h"
  7 +
  8 +
6 9
7 -#include "configpanelbutton.h"  
8 10
9 ConfigWindow::ConfigWindow(QWidget *parent) : 11 ConfigWindow::ConfigWindow(QWidget *parent) :
10 QMainWindow(parent), 12 QMainWindow(parent),
11 ui(new Ui::ConfigWindow) 13 ui(new Ui::ConfigWindow)
12 { 14 {
  15 + uint32_t idx;
13 ui->setupUi(this); 16 ui->setupUi(this);
14 17
15 ui->clockContainer->setParent(ui->upperStack); 18 ui->clockContainer->setParent(ui->upperStack);
16 setAttribute(Qt::WA_DeleteOnClose); 19 setAttribute(Qt::WA_DeleteOnClose);
17 20
18 ui->scrollAreaMenuLayout->setAlignment(Qt::AlignTop); 21 ui->scrollAreaMenuLayout->setAlignment(Qt::AlignTop);
  22 +
19 ConfigPanelButton *configbtn; 23 ConfigPanelButton *configbtn;
20 - for(int i = 0;i <20;i++){  
21 - configbtn = new ConfigPanelButton(this,i);  
22 - configbtn->showFavoriteButton();  
23 - configbtn->setText("TEST");  
24 - configbtn->setValue("test");  
25 - ui->scrollAreaMenuLayout->addWidget(configbtn);  
26 - connect(configbtn,SIGNAL(clicked(uint16_t)),SLOT(onConfigBtnClicked(uint16_t))); 24 +// for(int i = 0;i <20;i++){
  25 +// configbtn = new ConfigPanelButton(this,i);
  26 +// configbtn->showFavoriteButton();
  27 +// configbtn->setText("TEST");
  28 +// configbtn->setValue("test");
  29 +// ui->scrollAreaMenuLayout->addWidget(configbtn);
  30 +// connect(configbtn,SIGNAL(clicked(uint16_t)),SLOT(onConfigBtnClicked(uint16_t)));
  31 +// }
  32 + Config* cfg = Config::getInstance();
  33 +
  34 + QSetIterator<uint32_t> itr = cfg->getConstBeginFavorite();
  35 + while(itr.hasNext()) itr.next();
  36 +
  37 + while(itr.hasPrevious()){
  38 + idx = itr.previous();
  39 + //configbtn = new ConfigPanelButton(this,idx);
27 } 40 }
28 41
  42 + m_nCurConfigPos = config_menu_favorite;
29 43
  44 + reloadUi();
30 45
31 } 46 }
32 47
@@ -52,16 +67,60 @@ void ConfigWindow::on_pushButton_3_clicked() @@ -52,16 +67,60 @@ void ConfigWindow::on_pushButton_3_clicked()
52 w->showFullScreen(); 67 w->showFullScreen();
53 } 68 }
54 69
55 -void ConfigWindow::on_pushButton_8_clicked() 70 +void ConfigWindow::on_pushButton_8_clicked() //설정 버튼
56 { 71 {
57 - 72 + if(m_nCurConfigPos != config_menu_setting){
  73 + m_nCurConfigPos = config_menu_setting;
  74 + reloadUi();
  75 + }
58 } 76 }
59 77
60 void ConfigWindow::onConfigBtnClicked(uint16_t id){ 78 void ConfigWindow::onConfigBtnClicked(uint16_t id){
61 - qDebug() << "pressed id " << id; 79 + qDebug() << "config id prsess : " << id;
62 } 80 }
63 81
64 82
65 void ConfigWindow::onConfigCheckBtnClicked(uint16_t id, bool checked){ 83 void ConfigWindow::onConfigCheckBtnClicked(uint16_t id, bool checked){
66 84
67 } 85 }
  86 +
  87 +void ConfigWindow::reloadUi(void){
  88 + QWidget** pws = m_vectorMenuList.data();
  89 + QWidget* pw;
  90 + ConfigPanelButton *pcb;
  91 + Config* cfg = Config::getInstance();
  92 + QString strtemp="";
  93 + for(int i = 0; i < m_vectorMenuList.count();i++){
  94 + pw = pws[i];
  95 + ui->scrollAreaMenuLayout->removeWidget(pw);
  96 + delete pw;
  97 + }
  98 + m_vectorMenuList.clear();
  99 +
  100 + if(m_nCurConfigPos != config_menu_favorite){
  101 + for(int i=0 ; i < m_arrMaxMenuCount[m_nCurConfigPos] ;i++){
  102 + pcb = new ConfigPanelButton(this,m_arrConfigListInfos[m_nCurConfigPos][i]);
  103 + qDebug() <<m_arrConfigListInfos[m_nCurConfigPos][i] << cfg->getTitleString(m_arrConfigListInfos[m_nCurConfigPos][i]);
  104 + strtemp = cfg->getTitleString(m_arrConfigListInfos[m_nCurConfigPos][i]);
  105 + pcb->setText(strtemp);
  106 + strtemp = cfg->getValueString(m_arrConfigListInfos[m_nCurConfigPos][i]);
  107 + pcb->setValue(strtemp);
  108 + pcb->showFavoriteButton();
  109 + pcb->setFavoriteCheck(cfg->isFavorite(m_arrConfigListInfos[m_nCurConfigPos][i]));
  110 + ui->scrollAreaMenuLayout->addWidget(pcb);
  111 + m_vectorMenuList.append(pcb);
  112 + connect(pcb ,SIGNAL(clicked(uint16_t)),SLOT(onConfigBtnClicked(uint16_t)));
  113 + }
  114 + }
  115 +
  116 + ui->scrollAreaMenu->adjustSize(); //Display 전 Contents 사이즈 수정 깜빡임 제거함.
  117 +
  118 +}
  119 +
  120 +void ConfigWindow::on_pushButton_7_clicked() //음향 관리
  121 +{
  122 + if(m_nCurConfigPos != config_menu_sound){
  123 + m_nCurConfigPos = config_menu_sound;
  124 + reloadUi();
  125 + }
  126 +}
app/gui/oven_control/configwindow.h
@@ -2,8 +2,24 @@ @@ -2,8 +2,24 @@
2 #define CONFIGWINDOW_H 2 #define CONFIGWINDOW_H
3 3
4 #include <QMainWindow> 4 #include <QMainWindow>
  5 +#include <QVector>
5 6
6 #include "udphandler.h" 7 #include "udphandler.h"
  8 +#include "configpanelbutton.h"
  9 +#include "config.h"
  10 +
  11 +using namespace Define;
  12 +
  13 +enum CONFIG_MENU_POS{
  14 + config_menu_favorite = -1,
  15 + config_menu_setting =0,
  16 + config_menu_sound,
  17 + config_menu_system,
  18 + config_menu_energy,
  19 + config_menu_expert,
  20 + config_menu_display,
  21 + config_menu_service
  22 +};
7 23
8 namespace Ui { 24 namespace Ui {
9 class ConfigWindow; 25 class ConfigWindow;
@@ -15,8 +31,19 @@ class ConfigWindow : public QMainWindow @@ -15,8 +31,19 @@ class ConfigWindow : public QMainWindow
15 31
16 private: 32 private:
17 const uint16_t m_arrMaxMenuCount[7] ={ 33 const uint16_t m_arrMaxMenuCount[7] ={
18 - 9,7, 34 + 9,8,0,
19 }; 35 };
  36 + const Define::ConfigType m_arrConfigListInfos[7][20] = {
  37 + {config_language, config_datetime, config_temptype,config_backlight, config_stop_delay , config_best_dish_weight,config_party_dish_weight, config_time_type,config_resttime_format,},
  38 + {config_marster_vol,config_keypad_sound1,config_keypad_sound2,config_request_loadexec,config_programstep_finish,config_cooktime_finish,config_stoperror_distinguish,config_sound_factory_reset},
  39 + {config_invalid,},
  40 + {config_invalid,},
  41 + {config_invalid,},
  42 + {config_invalid,},
  43 + {config_invalid,}
  44 + };
  45 + void reloadUi(void);
  46 +
20 public: 47 public:
21 explicit ConfigWindow(QWidget *parent = 0); 48 explicit ConfigWindow(QWidget *parent = 0);
22 ~ConfigWindow(); 49 ~ConfigWindow();
@@ -31,12 +58,16 @@ private slots: @@ -31,12 +58,16 @@ private slots:
31 void on_pushButton_8_clicked(); 58 void on_pushButton_8_clicked();
32 59
33 60
  61 + void on_pushButton_7_clicked();
  62 +
34 public slots: 63 public slots:
35 void onConfigBtnClicked(uint16_t id); 64 void onConfigBtnClicked(uint16_t id);
36 void onConfigCheckBtnClicked(uint16_t id, bool checked); 65 void onConfigCheckBtnClicked(uint16_t id, bool checked);
37 66
38 private: 67 private:
39 Ui::ConfigWindow *ui; 68 Ui::ConfigWindow *ui;
  69 + QVector<QWidget *> m_vectorMenuList;
  70 + CONFIG_MENU_POS m_nCurConfigPos;
40 }; 71 };
41 72
42 #endif // CONFIGWINDOW_H 73 #endif // CONFIGWINDOW_H
app/gui/oven_control/configwindow.ui
@@ -30,6 +30,30 @@ font-size: 30px; @@ -30,6 +30,30 @@ font-size: 30px;
30 </string> 30 </string>
31 </property> 31 </property>
32 <widget class="QWidget" name="centralwidget"> 32 <widget class="QWidget" name="centralwidget">
  33 + <property name="styleSheet">
  34 + <string notr="true">QScrollBar:vertical {
  35 +border: none;
  36 +background: transparent;
  37 +width: 35px;
  38 +margin: 30px 15px 30px 0px;
  39 +}
  40 +QScrollBar::handle:vertical {
  41 +background: #B7B7B7;
  42 +border-radius: 10px;
  43 +min-height: 100px;
  44 +}
  45 +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
  46 +border: none;
  47 +background: none;
  48 +height: 0px;
  49 +}
  50 +QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
  51 +border: none;
  52 +}
  53 +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
  54 +background: none;
  55 +}</string>
  56 + </property>
33 <widget class="QStackedWidget" name="upperStack"> 57 <widget class="QStackedWidget" name="upperStack">
34 <property name="geometry"> 58 <property name="geometry">
35 <rect> 59 <rect>
@@ -84,11 +108,20 @@ font-size: 30px; @@ -84,11 +108,20 @@ font-size: 30px;
84 </property> 108 </property>
85 <property name="styleSheet"> 109 <property name="styleSheet">
86 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_01.png); } 110 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_01.png); }
87 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_01_ov.png); }</string> 111 +QPushButton:pressed, QPushButton:focus, QPushButton:checked { background-image: url(:/images/config/050_setting_btn_01_ov.png); }</string>
88 </property> 112 </property>
89 <property name="text"> 113 <property name="text">
90 <string>즐겨찾기</string> 114 <string>즐겨찾기</string>
91 </property> 115 </property>
  116 + <property name="checkable">
  117 + <bool>true</bool>
  118 + </property>
  119 + <property name="checked">
  120 + <bool>true</bool>
  121 + </property>
  122 + <property name="autoExclusive">
  123 + <bool>true</bool>
  124 + </property>
92 <property name="style" stdset="0"> 125 <property name="style" stdset="0">
93 <string>type</string> 126 <string>type</string>
94 </property> 127 </property>
@@ -117,11 +150,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0 @@ -117,11 +150,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0
117 </property> 150 </property>
118 <property name="styleSheet"> 151 <property name="styleSheet">
119 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_02.png); } 152 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_02.png); }
120 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_02_ov.png); }</string> 153 +QPushButton:pressed, QPushButton:focus,QPushButton:checked { background-image: url(:/images/config/050_setting_btn_02_ov.png); }</string>
121 </property> 154 </property>
122 <property name="text"> 155 <property name="text">
123 <string>설정</string> 156 <string>설정</string>
124 </property> 157 </property>
  158 + <property name="checkable">
  159 + <bool>true</bool>
  160 + </property>
  161 + <property name="autoExclusive">
  162 + <bool>true</bool>
  163 + </property>
125 <property name="style" stdset="0"> 164 <property name="style" stdset="0">
126 <string>type</string> 165 <string>type</string>
127 </property> 166 </property>
@@ -150,11 +189,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0 @@ -150,11 +189,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0
150 </property> 189 </property>
151 <property name="styleSheet"> 190 <property name="styleSheet">
152 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_03.png); } 191 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_03.png); }
153 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_03_ov.png); }</string> 192 +QPushButton:pressed, QPushButton:focus, QPushButton:checked { background-image: url(:/images/config/050_setting_btn_03_ov.png); }</string>
154 </property> 193 </property>
155 <property name="text"> 194 <property name="text">
156 <string>음향 관리</string> 195 <string>음향 관리</string>
157 </property> 196 </property>
  197 + <property name="checkable">
  198 + <bool>true</bool>
  199 + </property>
  200 + <property name="autoExclusive">
  201 + <bool>true</bool>
  202 + </property>
158 <property name="style" stdset="0"> 203 <property name="style" stdset="0">
159 <string>type</string> 204 <string>type</string>
160 </property> 205 </property>
@@ -183,11 +228,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0 @@ -183,11 +228,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0
183 </property> 228 </property>
184 <property name="styleSheet"> 229 <property name="styleSheet">
185 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_04.png); } 230 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_04.png); }
186 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_04_ov.png); }</string> 231 +QPushButton:pressed, QPushButton:focus,QPushButton:checked { background-image: url(:/images/config/050_setting_btn_04_ov.png); }</string>
187 </property> 232 </property>
188 <property name="text"> 233 <property name="text">
189 <string>시스템 관리</string> 234 <string>시스템 관리</string>
190 </property> 235 </property>
  236 + <property name="checkable">
  237 + <bool>true</bool>
  238 + </property>
  239 + <property name="autoExclusive">
  240 + <bool>true</bool>
  241 + </property>
191 <property name="style" stdset="0"> 242 <property name="style" stdset="0">
192 <string>type</string> 243 <string>type</string>
193 </property> 244 </property>
@@ -207,11 +258,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0 @@ -207,11 +258,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0
207 </property> 258 </property>
208 <property name="styleSheet"> 259 <property name="styleSheet">
209 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_05.png); } 260 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_05.png); }
210 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_05_ov.png); }</string> 261 +QPushButton:pressed, QPushButton:focus ,QPushButton:checked{ background-image: url(:/images/config/050_setting_btn_05_ov.png); }</string>
211 </property> 262 </property>
212 <property name="text"> 263 <property name="text">
213 <string>에너지 관리</string> 264 <string>에너지 관리</string>
214 </property> 265 </property>
  266 + <property name="checkable">
  267 + <bool>true</bool>
  268 + </property>
  269 + <property name="autoExclusive">
  270 + <bool>true</bool>
  271 + </property>
215 <property name="style" stdset="0"> 272 <property name="style" stdset="0">
216 <string>type</string> 273 <string>type</string>
217 </property> 274 </property>
@@ -240,11 +297,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0 @@ -240,11 +297,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0
240 </property> 297 </property>
241 <property name="styleSheet"> 298 <property name="styleSheet">
242 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_06.png); } 299 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_06.png); }
243 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_06_ov.png); }</string> 300 +QPushButton:pressed, QPushButton:focus,QPushButton:checked { background-image: url(:/images/config/050_setting_btn_06_ov.png); }</string>
244 </property> 301 </property>
245 <property name="text"> 302 <property name="text">
246 <string>전문가 설정</string> 303 <string>전문가 설정</string>
247 </property> 304 </property>
  305 + <property name="checkable">
  306 + <bool>true</bool>
  307 + </property>
  308 + <property name="autoExclusive">
  309 + <bool>true</bool>
  310 + </property>
248 <property name="style" stdset="0"> 311 <property name="style" stdset="0">
249 <string>type</string> 312 <string>type</string>
250 </property> 313 </property>
@@ -273,11 +336,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0 @@ -273,11 +336,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0
273 </property> 336 </property>
274 <property name="styleSheet"> 337 <property name="styleSheet">
275 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_07.png); } 338 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_07.png); }
276 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_07_ov.png); }</string> 339 +QPushButton:pressed, QPushButton:focus,QPushButton:checked { background-image: url(:/images/config/050_setting_btn_07_ov.png); }</string>
277 </property> 340 </property>
278 <property name="text"> 341 <property name="text">
279 <string>화면 관리</string> 342 <string>화면 관리</string>
280 </property> 343 </property>
  344 + <property name="checkable">
  345 + <bool>true</bool>
  346 + </property>
  347 + <property name="autoExclusive">
  348 + <bool>true</bool>
  349 + </property>
281 <property name="style" stdset="0"> 350 <property name="style" stdset="0">
282 <string>type</string> 351 <string>type</string>
283 </property> 352 </property>
@@ -306,11 +375,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0 @@ -306,11 +375,17 @@ QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/0
306 </property> 375 </property>
307 <property name="styleSheet"> 376 <property name="styleSheet">
308 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_08.png); } 377 <string notr="true">QPushButton { background-image: url(:/images/config/050_setting_btn_08.png); }
309 -QPushButton:pressed, QPushButton:focus { background-image: url(:/images/config/050_setting_btn_08_ov.png); }</string> 378 +QPushButton:pressed, QPushButton:focus ,QPushButton:checked{ background-image: url(:/images/config/050_setting_btn_08_ov.png); }</string>
310 </property> 379 </property>
311 <property name="text"> 380 <property name="text">
312 <string>서비스</string> 381 <string>서비스</string>
313 </property> 382 </property>
  383 + <property name="checkable">
  384 + <bool>true</bool>
  385 + </property>
  386 + <property name="autoExclusive">
  387 + <bool>true</bool>
  388 + </property>
314 <property name="style" stdset="0"> 389 <property name="style" stdset="0">
315 <string>type</string> 390 <string>type</string>
316 </property> 391 </property>
@@ -410,7 +485,7 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }&lt;/str @@ -410,7 +485,7 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }&lt;/str
410 </rect> 485 </rect>
411 </property> 486 </property>
412 <property name="styleSheet"> 487 <property name="styleSheet">
413 - <string notr="true"/> 488 + <string notr="true">background-color : transparent;</string>
414 </property> 489 </property>
415 <property name="frameShape"> 490 <property name="frameShape">
416 <enum>QFrame::NoFrame</enum> 491 <enum>QFrame::NoFrame</enum>
@@ -446,9 +521,18 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }&lt;/str @@ -446,9 +521,18 @@ QPushButton:pressed { border-image: url(:/images/bottom_bar/help_ov.png); }&lt;/str
446 <property name="sizeConstraint"> 521 <property name="sizeConstraint">
447 <enum>QLayout::SetDefaultConstraint</enum> 522 <enum>QLayout::SetDefaultConstraint</enum>
448 </property> 523 </property>
  524 + <property name="leftMargin">
  525 + <number>20</number>
  526 + </property>
  527 + <property name="topMargin">
  528 + <number>30</number>
  529 + </property>
449 <property name="rightMargin"> 530 <property name="rightMargin">
450 <number>0</number> 531 <number>0</number>
451 </property> 532 </property>
  533 + <property name="bottomMargin">
  534 + <number>26</number>
  535 + </property>
452 </layout> 536 </layout>
453 </widget> 537 </widget>
454 </widget> 538 </widget>