Bläddra i källkod

방명칭 변경 작업

jslee(madeinlab) 3 år sedan
förälder
incheckning
765fabd704

BIN
ManagerSetting/libs/WallPadAPI.jar


+ 1 - 1
ManagerSetting/src/main/AndroidManifest.xml

@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.artncore.managersetting"
     android:versionCode="23"
-    android:versionName="2021.08.09.01">
+    android:versionName="2021.11.03.01">
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

+ 28 - 0
ManagerSetting/src/main/java/com/artncore/managersetting/dao/MainDatabaseManager.java

@@ -171,6 +171,11 @@ public class MainDatabaseManager {
     public static final int SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_CAMERA  			= SETTING_ITEM_TYPE_BASE + 226; //서브월패드현관카메라좌우반전
     public static final int SETTING_ITEM_SUB_DEVICE_REMOTECTRL_LIGHT            = SETTING_ITEM_TYPE_BASE + 227; //원격제어조명선택
     public static final int SETTING_ITEM_SUB_DEVICE_HS_PLATFORM                 = SETTING_ITEM_TYPE_BASE + 228; //효성플랫폼연동
+    public static final int SETTING_ITEM_SUB_DEVICE_VENTI_TIMER                 = SETTING_ITEM_TYPE_BASE + 229; //환기타이머
+    public static final int SETTING_ITEM_SUB_DEVICE_VENTI_RESERVATION           = SETTING_ITEM_TYPE_BASE + 230; //환기예약설정
+    public static final int SETTING_ITEM_SUB_DEVICE_ROOMNAME_EDIT_USE           = SETTING_ITEM_TYPE_BASE + 231; //방명칭수정
+    public static final int SETTING_ITEM_SUB_DEVICE_SHADING                     = SETTING_ITEM_TYPE_BASE + 232; //차광제어기
+
 
     public static final String[] SUB_DEVICE_ITEM_ID = {
             "가스밸브"
@@ -302,6 +307,10 @@ public class MainDatabaseManager {
             , "서브월패드현관카메라좌우반전"
             , "원격제어조명선택"
             , "효성플랫폼연동"
+            , "환기타이머"
+            , "환기예약설정"
+            , "방명칭수정"
+            , "차광제어기"
     };
 
 
@@ -1381,6 +1390,10 @@ public class MainDatabaseManager {
             case SETTING_ITEM_SUB_DEVICE_SUBWALLPAD_CAMERA:
             case SETTING_ITEM_SUB_DEVICE_REMOTECTRL_LIGHT:
             case SETTING_ITEM_SUB_DEVICE_HS_PLATFORM:
+            case SETTING_ITEM_SUB_DEVICE_VENTI_TIMER:
+            case SETTING_ITEM_SUB_DEVICE_VENTI_RESERVATION:
+            case SETTING_ITEM_SUB_DEVICE_ROOMNAME_EDIT_USE:
+            case SETTING_ITEM_SUB_DEVICE_SHADING:
                 result = SUB_DEVICE_ITEM_ID[itemType - SETTING_ITEM_SUB_DEVICE_GAS];
                 break;
         }
@@ -2084,6 +2097,21 @@ public class MainDatabaseManager {
                         devInfo = "1(1:효성플랫폼연동(사용안함))";
                         break;
 
+                    case SETTING_ITEM_SUB_DEVICE_VENTI_TIMER:
+                        devInfo = "1(1:환기타이머(사용함))";
+                        break;
+                    case SETTING_ITEM_SUB_DEVICE_VENTI_RESERVATION:
+                        devInfo = "1(1:환기예약설정(사용함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_ROOMNAME_EDIT_USE:
+                        devInfo = "1(1:방명칭수정(사용안함))";
+                        break;
+
+                    case SETTING_ITEM_SUB_DEVICE_SHADING:
+                        devInfo = "1(1:차광제어기(사용안함))";
+                        break;
+
                 }
             }
         }

+ 6 - 0
ManagerSetting/src/main/java/com/artncore/managersetting/domain/Const.java

@@ -76,6 +76,7 @@ public class Const {
 
     public static final String CONTROLLER_DISTRIBUTION_KIND_SMART = "스마트분전반";
     public static final String CONTROLLER_DISTRIBUTION_KIND_KNX = "KNX분전반";
+    public static final String CONTROLLER_DISTRIBUTION_DC_V2 = "DC배전V2";
 
     public static final String CONTROLLER_POWERCONTROLLER_KIND_BASIC = "기본";
     public static final String CONTROLLER_POWERCONTROLLER_KIND_DIRECT = "직결보드";
@@ -319,6 +320,8 @@ public class Const {
     public static final int CONTROLLER_TYPE_CTRL_USE = CONTROLLER_TYPE_BASE + 344; // 제어기능
     public static final int CONTROLLER_TYPE_KITCHEN_EM_CTRL_OPTION = CONTROLLER_TYPE_CTRL_USE + 345; // 각실EM제어옵션
 
+    public static final int CONTROLLER_TYPE_SHADING = CONTROLLER_TYPE_CTRL_USE + 346; // 차광제어기
+
    public static final String CONTENTS_ROOT = "/storage/emulated/0/wallpaddata/";
     //public static final String CONTENTS_ROOT = "/storage/sdcard0/wallpaddata";
     public static final String BESTIN_CONTENTS_ROOT = "/storage/emulated/0/Bestin/";
@@ -467,5 +470,8 @@ public class Const {
     public static final int WALLPAD_CAM_SUB_CAMERA_NOMAL = 0;
     public static final int WALLPAD_CAM_SUB_CAMERA_FLIP = 1;
 
+    // Key Code
+    public static final int BTN_CAMERA_SET = 267; 	// 대우건설 월패드 전면 카메라 on/off 정보 (IHN-DW101-I)
+
 }
 

+ 6 - 0
ManagerSetting/src/main/java/com/artncore/managersetting/ui/activities/SetAddress.java

@@ -1484,6 +1484,7 @@ public class SetAddress extends Activity
             itemList.add(this.getString(R.string.do_not_used));
             itemList.add(this.getString(R.string.contoller_energy_distribution_smart));
             itemList.add(this.getString(R.string.contoller_energy_distribution_knx));
+            itemList.add(this.getString(R.string.contoller_energy_distribution_dc_v2));
 
             ArrayAdapter<String> spinnerAdapter;
             spinnerAdapter = new ArrayAdapter<String>(this.getApplicationContext(), R.layout.spinner_item, itemList);
@@ -1534,6 +1535,9 @@ public class SetAddress extends Activity
                     else if (Const.CONTROLLER_DISTRIBUTION_KIND_KNX.equals(strType)) {
                         distKindCurrent = 2;
                     }
+                    else if (Const.CONTROLLER_DISTRIBUTION_DC_V2.equals(strType)) {
+                        distKindCurrent = 3;
+                    }
                 }
                 else if(Const.CONTROLLER_SETTING_DO_NOT_USED.equals(InfoList.get(3)))
                 {
@@ -2180,6 +2184,8 @@ public class SetAddress extends Activity
                             typeName = Const.CONTROLLER_DISTRIBUTION_KIND_SMART;
                         else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_KIND_KNX))
                             typeName = Const.CONTROLLER_DISTRIBUTION_KIND_KNX;
+                        else if (itemName.equals(Const.CONTROLLER_DISTRIBUTION_DC_V2))
+                            typeName = Const.CONTROLLER_DISTRIBUTION_DC_V2;
 
                         value += "("
                                 + Const.CONTROLLER_SETTING_DO_USED

+ 32 - 0
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingControllerFragment.java

@@ -218,6 +218,9 @@ public class SettingControllerFragment extends Fragment implements ControllerLis
             addControllerVO(Const.CONTROLLER_TYPE_LH_GATEWAY);
 
             addControllerVO(Const.CONTROLLER_TYPE_KITCHEN_EM_CTRL_OPTION);
+
+            //차광제어기
+            addControllerVO(Const.CONTROLLER_TYPE_SHADING);
         }
     }
 
@@ -1212,6 +1215,25 @@ public class SettingControllerFragment extends Fragment implements ControllerLis
 
             }
             break;
+
+            //차광제어기 사용여부
+            case Const.CONTROLLER_TYPE_SHADING:
+            {
+                int shadingCount = Const.CONTROLLER_ONOFF_COUNT;
+
+                int shadingCurrent = Const.CONTROLLER_SETTING_DO_USED_INDEX;
+                if (mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SHADING) == false)
+                    shadingCurrent = Const.CONTROLLER_SETTING_DO_NOT_USED_INDEX;
+
+                String controllerName = mActivity.getString(R.string.contoller_shading);
+                controllerVO = new ControllerVO(type
+                        , controllerName
+                        , shadingCount
+                        , shadingCurrent
+                );
+            }
+            break;
+
         }
 
         if (controllerVO != null)
@@ -2037,6 +2059,12 @@ public class SettingControllerFragment extends Fragment implements ControllerLis
             }
             break;
 
+            case Const.CONTROLLER_TYPE_SHADING:
+            {
+                mMainDatabaseManager.updateSetUsedToSubDeviceOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_SHADING, position);
+            }
+            break;
+
             default:
                 break;
         }
@@ -2207,6 +2235,10 @@ public class SettingControllerFragment extends Fragment implements ControllerLis
                 updateSetUsedToSubDevice(type, position, itemName);
                 break;
 
+            case Const.CONTROLLER_TYPE_SHADING:
+                updateSetUsedToSubDevice(type, position, itemName);
+                break;
+
             default:
                 break;
         }

+ 192 - 0
ManagerSetting/src/main/java/com/artncore/managersetting/ui/fragments/SettingDetailFunctionFragment.java

@@ -1,5 +1,6 @@
 package com.artncore.managersetting.ui.fragments;
 
+import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -165,6 +166,9 @@ public class SettingDetailFunctionFragment extends Fragment
     public final int DETAIL_TYPE_PENTHOUSE_ESCAPELADDER =                         DETAIL_TYPE_BASE + 67;
     public final int DETAIL_TYPE_REMOTECTRL_LIGHT =                               DETAIL_TYPE_BASE + 68;
     public final int DETAIL_TYPE_HS_PLATFORM_USE =                                DETAIL_TYPE_BASE + 69;
+    public final int DETAIL_TYPE_VENTI_TIMER =                                    DETAIL_TYPE_BASE + 70;
+    public final int DETAIL_TYPE_VENTI_RESERVATION =                              DETAIL_TYPE_BASE + 71;
+    public final int DETAIL_TYPE_ROOMNAME_EDIT_USE =                              DETAIL_TYPE_BASE + 72;
 
     private Activity mActivity;
     private WallPadAPI mWallPadAPI;
@@ -457,8 +461,16 @@ public class SettingDetailFunctionFragment extends Fragment
         init_RemoteCtrl_Light();
 
         if (ModelType == Version.MODEL_TYPE.IHN_HS101 || ModelType == Version.MODEL_TYPE.IHN_HS101_I) initHSPlatformUse();
+
+        initVentiTimerUse();
+        initVentiReservationUse();
+        initRoomNameEditUse();
+
+        initShadingGroupEditUse();
     }
 
+
+
     private void initEscapeLadderDownSend()
     {
         int type = DETAIL_TYPE_ESCAPELADDER_DOWN_SEND;
@@ -2402,6 +2414,60 @@ public class SettingDetailFunctionFragment extends Fragment
         switchButton.switchEnabled(initValue);
     }
 
+    private void initVentiTimerUse() {
+        Log.d(TAG, "[initHSPlatformUse]");
+        int type = DETAIL_TYPE_VENTI_TIMER;
+        String typeName = mActivity.getString(R.string.detail_function_venti_timer_use);
+
+        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_venti_timer_use);
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(mActivity.getString(R.string.do_used));
+        listString.add(mActivity.getString(R.string.do_not_used));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTI_TIMER);
+        switchButton.switchEnabled(initValue);
+    }
+
+    private void initVentiReservationUse() {
+        Log.d(TAG, "[initVentiReservationUse]");
+        int type = DETAIL_TYPE_VENTI_RESERVATION;
+        String typeName = mActivity.getString(R.string.detail_function_venti_reservation_use);
+
+        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_venti_reservation_use);
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(mActivity.getString(R.string.do_used));
+        listString.add(mActivity.getString(R.string.do_not_used));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTI_RESERVATION);
+        switchButton.switchEnabled(initValue);
+    }
+
+    private void initRoomNameEditUse() {
+        Log.d(TAG, "[initRoomNameEditUse]");
+        int type = DETAIL_TYPE_ROOMNAME_EDIT_USE;
+        String typeName = mActivity.getString(R.string.detail_function_roomname_edit_use);
+
+        SwitchButton switchButton = (SwitchButton)mRootView.findViewById(R.id.btn_switch_roomname_edit_use);
+        switchButton.setSwitchButtonChangedListener(this, type, typeName);
+
+        List<String> listString = new ArrayList<String>();
+        listString.add(mActivity.getString(R.string.do_used));
+        listString.add(mActivity.getString(R.string.do_not_used));
+
+        switchButton.setText(listString);
+
+        boolean initValue = mMainDatabaseManager.isUsedSettingDataSubDev(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ROOMNAME_EDIT_USE);
+        switchButton.switchEnabled(initValue);
+    }
+
     private String getDefaultPentHouseHo() {
         WallpadStatusData DBMGR = null;
         DBMGR = new WallpadStatusData(mActivity.getApplicationContext());
@@ -2421,6 +2487,47 @@ public class SettingDetailFunctionFragment extends Fragment
         return DestStair;
     }
 
+
+    /**
+     * 차광제어기 방설정(차광제어기 Controller에서 제공되는 기기정보값에서 GroupID를 사용 안하는 경우 사용)
+     */
+    private void initShadingGroupEditUse() {
+        Log.d(TAG, "[initShadingGroupEditUse]");
+
+        Button btnShadingRoomEdit = (Button)mRootView.findViewById(R.id.btn_shading_group_edit);
+        btnShadingRoomEdit.setOnClickListener(mButtonClick);
+        
+        //초기값
+        String RoomSplit = "1,2,3,4,5,6,7,8";
+        try {
+            WallpadDeviceSet wds = new WallpadDeviceSet(mActivity);
+            RoomSplit = wds.Get_ShaindgController_SplitRoomNumber();
+            wds.closeDB();
+        }
+        catch (RuntimeException re) {
+            LogUtil.errorLogInfo("", TAG, re);
+        }
+        catch (Exception e) {
+
+        }
+
+        try
+        {
+            String[] Split_Array = RoomSplit.split(",");
+            for(int i = 1 ; i<=8; i++) {
+                int resouceId = getId("et_shading_group_edit_room" + i, R.id.class);
+                EditText editText = (EditText) mRootView.findViewById(resouceId);
+                hideSoftKeypad(editText);
+                editText.setText(Split_Array[i-1]);
+            }
+        }
+        catch (Exception e)
+        {
+
+        }
+    }
+
+
     // reload View
     public void reloadView(int type) {
         if (DEBUG)  Log.d(TAG, "reloadView() type : " + type);
@@ -2510,6 +2617,9 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_PENTHOUSE_ESCAPELADDER:
             case DETAIL_TYPE_REMOTECTRL_LIGHT:
             case DETAIL_TYPE_HS_PLATFORM_USE:
+            case DETAIL_TYPE_VENTI_TIMER:
+            case DETAIL_TYPE_VENTI_RESERVATION:
+            case DETAIL_TYPE_ROOMNAME_EDIT_USE:
                 break;
 
             default:
@@ -2889,6 +2999,62 @@ public class SettingDetailFunctionFragment extends Fragment
                 }
                 break;
 
+                case R.id.btn_shading_group_edit: {
+                    try {
+                        int pre_value = 0;
+                        String ShadingController_RoomSplit = "";
+                        boolean isError = false;
+
+                        for(int i = 1 ; i<=8; i++) {
+                            int resouceId = getId("et_shading_group_edit_room" + i, R.id.class);
+                            EditText editText = (EditText) mRootView.findViewById(resouceId);
+                            hideSoftKeypad(editText);
+                            String ed_str = editText.getText().toString().replaceAll("[^0-9]", ""); // 숫자 제외 문자 제거
+                            editText.setText(ed_str);
+                            int convert_value = Integer.parseInt(ed_str);
+                            if(pre_value >= convert_value)
+                            {
+                                Toast.makeText(mActivity, "값이 잘못 입력되었습니다.", Toast.LENGTH_LONG).show();
+                                isError = true;
+                                break;
+                            }
+                            //해당 정보 DB에 저장
+                            if(i == 1)
+                                ShadingController_RoomSplit = ed_str;
+                            else
+                                ShadingController_RoomSplit = ShadingController_RoomSplit + "," + ed_str;
+
+                            pre_value = convert_value;
+                        }
+
+                        if(!isError)
+                        {
+                            WallpadDeviceSet devset = new WallpadDeviceSet(mActivity);
+                            String Value = "1(1:차광제어기방설정(사용함)ID(" + ShadingController_RoomSplit + "))";
+                            if (devset != null) {
+                                devset.UpdateSettingData("subdev_list"
+                                        , "차광제어기방설정"
+                                        , 0
+                                        , Value
+                                );
+                                devset.closeDB();
+                                MainApplication.getApplication().setReboot();
+                            }
+                        }
+                    } catch (RuntimeException re) {
+                        LogUtil.errorLogInfo("", TAG, re);
+                        Toast.makeText(mActivity, "값이 잘못 입력되었습니다.", Toast.LENGTH_LONG).show();
+                        break;
+                    } catch (Exception e) {
+                        //e.printStackTrace();
+                        LogUtil.errorLogInfo("", TAG, e);
+                        Toast.makeText(mActivity, "값이 잘못 입력되었습니다.", Toast.LENGTH_LONG).show();
+                        break;
+                    }
+
+                }
+                break;
+
                 default:
                     break;
             }
@@ -2896,6 +3062,17 @@ public class SettingDetailFunctionFragment extends Fragment
         }
     };
 
+
+    private static int getId(String resourceName, Class<?> c) {
+        try {
+            Field idField = c.getDeclaredField(resourceName);
+            return idField.getInt(idField);
+        } catch (Exception e) {
+            throw new RuntimeException("No resource ID found for: "
+                    + resourceName + " / " + c, e);
+        }
+    }
+
     public void hideSoftKeypad(EditText mEditText) {
         if (mEditText == null) return;
 
@@ -4565,6 +4742,18 @@ public class SettingDetailFunctionFragment extends Fragment
                 mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_HS_PLATFORM, position);
                 break;
 
+            case DETAIL_TYPE_VENTI_TIMER:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTI_TIMER, position);
+                break;
+
+            case DETAIL_TYPE_VENTI_RESERVATION:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_VENTI_RESERVATION, position);
+                break;
+
+            case DETAIL_TYPE_ROOMNAME_EDIT_USE:
+                mMainDatabaseManager.updateSetUsedToSubDeviceSwitchButtonOnOff(MainDatabaseManager.SETTING_ITEM_SUB_DEVICE_ROOMNAME_EDIT_USE, position);
+                break;
+
             case DETAIL_TYPE_REGISTRATION_WIRELESS_DOOR_LOCK:
             case DETAIL_TYPE_SEND_HEART_BEAT:
             case DETAIL_TYPE_TOUCH_CALIBRATION:
@@ -4630,6 +4819,7 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_PENTHOUSE_ESCAPELADDER:
             case DETAIL_TYPE_REMOTECTRL_LIGHT:
             case DETAIL_TYPE_HS_PLATFORM_USE:
+            case DETAIL_TYPE_ROOMNAME_EDIT_USE:
                 updateSetUsedToSubDevice(type, position, itemName);
 
                 MainApplication.getApplication().setReboot();
@@ -4656,6 +4846,8 @@ public class SettingDetailFunctionFragment extends Fragment
             case DETAIL_TYPE_CO2_REDUCTION_SET:
             case DETAIL_TYPE_HEATLIGHTROOM_NAMESET:
             case DETAIL_TYPE_SMARTDOORCAM_DURATION:
+            case DETAIL_TYPE_VENTI_TIMER:
+            case DETAIL_TYPE_VENTI_RESERVATION:
                 updateSetUsedToSubDevice(type, position, itemName);
                 break;
 

+ 33 - 0
ManagerSetting/src/main/java/com/artncore/managersetting/util/NetworkUtil.java

@@ -1,5 +1,9 @@
 package com.artncore.managersetting.util;
 
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.InterfaceAddress;
+import java.net.NetworkInterface;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -15,6 +19,7 @@ import android.content.Context;
 import android.util.Log;
 
 import com.artncore.managersetting.R;
+import com.util.LogUtil;
 
 
 public class NetworkUtil {
@@ -124,6 +129,34 @@ public class NetworkUtil {
         return phoneAddr;
     }
 
+    public static String getSubnetMaskAddr(Context context) {
+        String strSubnetMask = Const.SUBNET_MASK;
+        try {
+            String strIP = getMyIP(context);
+            InetAddress localHost = Inet4Address.getByName(strIP);
+            NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
+
+            short nNetworkPrefixLength = 0;
+            for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
+//                Log.e(TAG, "[getSubnetMaskAddr] address = " + address);
+                if (address.toString().contains(strIP)) nNetworkPrefixLength = address.getNetworkPrefixLength();
+            }
+//            Log.e(TAG, "[getSubnetMaskAddr] nNetworkPrefixLength = " + nNetworkPrefixLength);
+
+            int nShift = 0xFFFFFFFF << (32 - nNetworkPrefixLength);
+            int AClass = ((byte) ((nShift & 0xFF000000) >> 24)) & 0xFF;
+            int BClass = ((byte) ((nShift & 0x00FF0000) >> 16)) & 0xFF;
+            int CClass = ((byte) ((nShift & 0x0000FF00) >> 8)) & 0xFF;
+            int DClass = ((byte) (nShift & 0x000000FF)) & 0xFF;
+            strSubnetMask = AClass + "." + BClass + "." + CClass + "." + DClass;
+//            Log.e(TAG, "[getSubnetMaskAddr] strSubnetMask = " + strSubnetMask);
+        } catch (Exception e) {
+            Log.e(TAG, "[Exception] getSubnetMaskAddr(Context context)");
+            LogUtil.errorLogInfo("", TAG, e);
+        }
+        return strSubnetMask;
+    }
+
 
     // get NVRServer address
     public static PhoneAddr getNVRServerAddr(Context context) {

+ 366 - 0
ManagerSetting/src/main/res/layout/setting_detail_container_gle.xml

@@ -2229,6 +2229,372 @@ android:background="#EFEFEE"
                     android:layout_marginRight="20dp"
                     android:gravity="center"
                     />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/tv_venti_timer_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="10dp"
+
+                    android:gravity="center|left"
+
+                    android:textSize="30sp"
+                    android:textColor="#000000"
+                    android:text="@string/detail_function_venti_timer_use"
+                    android:maxLines="1"
+                    />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_venti_timer_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginRight="20dp"
+                    android:gravity="center"
+                    />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/tv_venti_reservation_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="10dp"
+
+                    android:gravity="center|left"
+
+                    android:textSize="30sp"
+                    android:textColor="#000000"
+                    android:text="@string/detail_function_venti_reservation_use"
+                    android:maxLines="1"
+                    />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_venti_reservation_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginRight="20dp"
+                    android:gravity="center"
+                    />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/tv_roomname_edit_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="10dp"
+
+                    android:gravity="center|left"
+
+                    android:textSize="30sp"
+                    android:textColor="#000000"
+                    android:text="@string/detail_function_roomname_edit_use"
+                    android:maxLines="1"
+                    />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_roomname_edit_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginRight="20dp"
+                    android:gravity="center"
+                    />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical"
+                    >
+
+                    <RelativeLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        >
+                        <TextView
+                            android:id="@+id/tv_shading_group_edit_use"
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_use"
+                            android:maxLines="1"
+                            />
+                        <Button
+                            android:id="@+id/btn_shading_group_edit"
+                            android:layout_width="200px"
+                            android:layout_height="80dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginRight="20dp"
+                            android:layout_marginTop="10dp"
+                            android:text="@string/registration"
+                            android:textSize="30sp"
+                            />
+                    </RelativeLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:orientation="horizontal"
+                        android:layout_height="match_parent">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room1"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room1"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:inputType="number"
+                            android:textSize="24sp"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room2"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room2"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room3"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room3"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room4"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room4"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:orientation="horizontal"
+                        android:layout_height="match_parent">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room5"
+                            android:maxLines="1"
+                            android:layout_marginRight="10dp"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room5"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room6"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room6"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room7"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room7"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room8"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room8"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+                    </LinearLayout>
+                </LinearLayout>
+
+
+
+
+
             </RelativeLayout>
 
         </LinearLayout>

+ 366 - 0
ManagerSetting/src/main/res/layout/setting_detail_container_sa.xml

@@ -2625,6 +2625,372 @@ android:background="#EFEFEE"
                     android:layout_marginRight="20dp"
                     android:gravity="center"
                     />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/tv_venti_timer_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="10dp"
+
+                    android:gravity="center|left"
+
+                    android:textSize="30sp"
+                    android:textColor="#000000"
+                    android:text="@string/detail_function_venti_timer_use"
+                    android:maxLines="1"
+                    />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_venti_timer_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginRight="20dp"
+                    android:gravity="center"
+                    />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/tv_venti_reservation_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="10dp"
+
+                    android:gravity="center|left"
+
+                    android:textSize="30sp"
+                    android:textColor="#000000"
+                    android:text="@string/detail_function_venti_reservation_use"
+                    android:maxLines="1"
+                    />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_venti_reservation_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginRight="20dp"
+                    android:gravity="center"
+                    />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <TextView
+                    android:id="@+id/tv_roomname_edit_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentTop="true"
+                    android:layout_marginLeft="10dp"
+
+                    android:gravity="center|left"
+
+                    android:textSize="30sp"
+                    android:textColor="#000000"
+                    android:text="@string/detail_function_roomname_edit_use"
+                    android:maxLines="1"
+                    />
+
+                <com.artncore.managersetting.ui.SwitchButton
+                    android:id="@+id/btn_switch_roomname_edit_use"
+                    android:layout_width="wrap_content"
+                    android:layout_height="100dp"
+                    android:layout_alignParentRight="true"
+                    android:layout_marginRight="20dp"
+                    android:gravity="center"
+                    />
+            </RelativeLayout>
+
+            <ImageView
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:background="#DDDDDD"
+                />
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:orientation="vertical"
+                    >
+
+                    <RelativeLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        >
+                        <TextView
+                            android:id="@+id/tv_shading_group_edit_use"
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_use"
+                            android:maxLines="1"
+                            />
+                        <Button
+                            android:id="@+id/btn_shading_group_edit"
+                            android:layout_width="200px"
+                            android:layout_height="80dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginRight="20dp"
+                            android:layout_marginTop="10dp"
+                            android:text="@string/registration"
+                            android:textSize="30sp"
+                            />
+                    </RelativeLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:orientation="horizontal"
+                        android:layout_height="match_parent">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room1"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room1"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:inputType="number"
+                            android:textSize="24sp"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room2"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room2"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:inputType="number"
+                            android:textSize="24sp"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room3"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room3"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:inputType="number"
+                            android:textSize="24sp"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room4"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room4"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:inputType="number"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            />
+                    </LinearLayout>
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:orientation="horizontal"
+                        android:layout_height="match_parent">
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:layout_marginRight="10dp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room5"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room5"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:inputType="number"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room6"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room6"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room7"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room7"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:textSize="24sp"
+                            android:inputType="number"
+                            />
+
+                        <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="100dp"
+                            android:layout_alignParentTop="true"
+                            android:layout_marginLeft="10dp"
+                            android:gravity="center|left"
+                            android:textSize="30sp"
+                            android:textColor="#000000"
+                            android:text="@string/detail_function_shaindg_group_edit_room8"
+                            android:maxLines="1"
+                            />
+
+                        <EditText
+                            android:id="@+id/et_shading_group_edit_room8"
+                            android:layout_width="100dp"
+                            android:layout_height="80dp"
+                            android:layout_alignParentRight="true"
+                            android:layout_marginTop="10dp"
+                            android:layout_marginRight="100dp"
+                            android:layout_gravity="center"
+                            android:gravity="center"
+                            android:inputType="number"
+                            android:textSize="24sp"
+                            />
+                    </LinearLayout>
+                </LinearLayout>
+
+
+
+
+
             </RelativeLayout>
 
         </LinearLayout>

+ 19 - 2
ManagerSetting/src/main/res/values/strings.xml

@@ -170,7 +170,8 @@
     <string name="version_info_device_lh_gateway_ver">LH 게이트웨이 정보 : </string>
     <string name="version_info_model_name_ver">모델명 : </string>
     <string name="version_info_model_name_from_bsp_ver">(from BSP)</string>
-
+    <string name="version_info_model_name_firmware_download">펌웨어 다운로드 : </string>
+    <string name="version_info_touch_ic_fw_ver">터치IC FW 버전 : </string>
 
     <string name="guard_info_jurisdictional_guard">관할경비실 : </string>
     <string name="guard_info_front_gate_guard">정문 경비시 : </string>
@@ -367,6 +368,7 @@
     <string name="setting_energy_distribution">분전반</string>
     <string name="contoller_energy_distribution_smart">스마트분전반</string>
     <string name="contoller_energy_distribution_knx">KNX분전반</string>
+    <string name="contoller_energy_distribution_dc_v2">DC배전V2</string>
     <string name="setting_energy_powercontroller">통합전력제어기</string>
     <string name="contoller_powercontroller_basic">기본</string>
     <string name="contoller_powercontroller_direct">직결보드</string>
@@ -598,6 +600,9 @@
     <string name="detail_function_remotectrl_light">원격제어 조명선택</string>
     <string name="detail_function_resident_safety_check">거주자 안전 확인</string>
     <string name="detail_function_hs_platform_use">효성플랫폼 연동</string>
+    <string name="detail_function_venti_timer_use">환기 타이머</string>
+    <string name="detail_function_venti_reservation_use">환기 예약설정</string>
+    <string name="detail_function_roomname_edit_use">방 명칭 수정</string>
 
     <string name="show_elevator_default">기본</string>
     <string name="show_elevator_stairs">층표시</string>
@@ -656,7 +661,19 @@
     <!--
     <string name="detail_function_kakao_set">카카오홈 설정</string>
     -->
-    
+
+    <string name="contoller_shading">차광제어기</string>
+
+
+    <string name="detail_function_shaindg_group_edit_use">차광제어기 방설정</string>
+    <string name="detail_function_shaindg_group_edit_room1">거실</string>
+    <string name="detail_function_shaindg_group_edit_room2">방1</string>
+    <string name="detail_function_shaindg_group_edit_room3">방2</string>
+    <string name="detail_function_shaindg_group_edit_room4">방3</string>
+    <string name="detail_function_shaindg_group_edit_room5">방4</string>
+    <string name="detail_function_shaindg_group_edit_room6">방5</string>
+    <string name="detail_function_shaindg_group_edit_room7">방6</string>
+    <string name="detail_function_shaindg_group_edit_room8">방7</string>
 
 </resources>
 

+ 1 - 0
WallPadHomeCtrl/src/main/AndroidManifest.xml

@@ -20,6 +20,7 @@
             android:name="kr.co.icontrols.wallpadhomectrl.MainActivity"
             android:launchMode="singleTop"
             android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
+            android:windowSoftInputMode="adjustNothing"
             android:label="@string/app_name"
          
             >

+ 11 - 1
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/declare/ID.java

@@ -393,6 +393,15 @@ public final class ID
 			public final static int ROOM_6           = BASE + 305;
 			public final static int ROOM_7           = BASE + 306;
 			public final static int ROOM_8           = BASE + 307;
+
+			public final static int ROOM_INFO_1           = BASE + 310;
+			public final static int ROOM_INFO_2           = BASE + 311;
+			public final static int ROOM_INFO_3           = BASE + 312;
+			public final static int ROOM_INFO_4           = BASE + 313;
+			public final static int ROOM_INFO_5           = BASE + 314;
+			public final static int ROOM_INFO_6           = BASE + 315;
+			public final static int ROOM_INFO_7           = BASE + 316;
+			public final static int ROOM_INFO_8           = BASE + 317;
 		}
 	}
 
@@ -1995,8 +2004,9 @@ public final class ID
 			public final static int TAP_DEFAULT         = BASE + 23;
 			public final static int TAP_RESERVATION     = BASE + 24;
 			public final static int TAP_SLEEP           = BASE + 25;
+			public final static int EDIT 				= BASE + 26;
 
-			public final static int MANUAL	            = BASE + 26;
+			public final static int MANUAL	            = BASE + 30;
 		}
 		public static final class text
 		{

+ 140 - 3
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2PopupScreen.java

@@ -15,19 +15,27 @@ import android.content.Intent;
 import android.graphics.Color;
 import android.os.Handler;
 import android.os.Message;
+import android.text.InputFilter;
 import android.util.Log;
+import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.MotionEvent;
 import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
 import android.widget.RelativeLayout;
+import android.widget.Toast;
 
 import com.artncore.WallPadDataMgr.WallpadDeviceSet;
+import com.artncore.WallPadDataMgr.WallpadStatusData;
 import com.artncore.commons.DataClasses.HeatingV2;
+import com.artncore.commons.define;
 import com.util.LogUtil;
 import com.artncore.wallpadapi.HeatingV2API;
 import com.artncore.wallpadapi.HeatingV2API.POLLING_MODE;
 import com.artncore.wallpadapi.WallPadAPI;
 
+import kr.co.icontrols.wallpadhomectrl.MainActivity;
 import kr.co.icontrols.wallpadhomectrl.PopupActivity;
 import kr.co.icontrols.wallpadhomectrl.R;
 import kr.co.icontrols.wallpadhomectrl.declare.Common;
@@ -35,6 +43,7 @@ import kr.co.icontrols.wallpadhomectrl.declare.ID;
 import kr.co.icontrols.wallpadsupport.Version;
 import kr.co.icontrols.wallpadsupport.WpadImageView;
 import kr.co.icontrols.wallpadsupport.WpadImageView.TOUCH_KIND;
+import kr.co.icontrols.wallpadsupport.WpadScale;
 import kr.co.icontrols.wallpadsupport.WpadScreen;
 import kr.co.icontrols.wallpadsupport.WpadSound.SND;
 import kr.co.icontrols.wallpadsupport.WpadTextView;
@@ -70,6 +79,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
     private WpadImageView ExitBtn;                                         // 종료버튼
     private WpadImageView RoomSel_LeftBtn, RoomSel_RightBtn;               // 방선택좌/우
     private WpadImageView TabDefaultBtn, TabReservationBtn, TabSleepBtn;   // 탭 : 기본설정 , 예약설정, 취침설정
+    private WpadImageView EditBtn;                                         // 방명칭 편집 버튼
     private WpadTextView TitleText;                                        // 방이름
 
     // [기본설정 - Image & Button & Text]
@@ -78,6 +88,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
     private WpadImageView D_NowTempBox, D_SetTempBox;                      // 현재온도, 설정온도 박스
     //private WpadImageView D_ModeBox;                                       // 운전모드 표시박스
     private WpadImageView D_FireMark;                                      // 불꽃표시
+    private EditText nameEditText; 									       // 방명칭 편집 에디트박스
 
     private WpadImageView D_OnOffBtn;                                      // ON/OFF 버튼
     private WpadImageView D_HeatingBtn, D_ReservationBtn, D_SleepBtn;      // 난방,예약,취침 버튼
@@ -116,6 +127,24 @@ public class HeatingV2PopupScreen extends WpadScreen {
     private int OPERATION_MODE = -1;
 
     private int UX_MODE = -1; // UX 모드 (0: 일반 / 1: 간편모드)
+	
+	WallpadStatusData wallpadStatusData = null;
+	private String originRoomName = "";
+
+    private InputMethodManager inputMethodManager;
+
+    private EDIT_STATE edit_state = EDIT_STATE.Normal;
+
+    public enum EDIT_STATE {
+        Normal(0),
+        Edit(1),
+        Other(100);
+        private int mIdx;
+
+        private EDIT_STATE(int idx) {
+            this.mIdx = idx;
+        }
+    }
 
     private int mCurrentTabStatus = -1;
     private int mCurrentRoomIndex = 0;
@@ -184,6 +213,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
         DebugLogOutput("[Create] - Step1 : Data Create");
         OPERATION_MODE = operationMode;
         mData = new Data();
+        if (wallpadStatusData == null) wallpadStatusData = new WallpadStatusData(context);
 
         UX_MODE = ((PopupActivity) context).GetEasyModeUXUse() ? Common.UX_EASY_MODE : Common.UX_NORMAL_MODE;
         Log.d(TAG, "[HeatingV2PopupScreen] UX_MODE [" + UX_MODE + "]");
@@ -321,6 +351,31 @@ public class HeatingV2PopupScreen extends WpadScreen {
         ViewRegistration(layout, m_Manual, Common.PopupAlarmMarginLEFT(169), Common.PopupAlarmMarginTOP(120));
         setManualBtnVisible( PopupActivity.getManualUse() );
 
+        if (MainActivity.bRoomNameEditUse) {
+            nameEditText = new EditText(context);
+            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(WpadScale.getWidth(282), WpadScale.getHeight(59));
+            params.setMargins(WpadScale.getWidth(Common.PopupNomalMarginLEFT(482)), WpadScale.getHeight(Common.PopupNomalMarginTOP(79)), 0, 0);
+            nameEditText.setLayoutParams(params);
+            nameEditText.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER);
+            nameEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, (float) Common.fontsize._26_DEFAULT);
+            nameEditText.setTextColor(Color.BLACK);
+            nameEditText.setSingleLine(true);
+
+            int maxLength = 6;
+            InputFilter[] filterArray = new InputFilter[1];
+            filterArray[0] = new InputFilter.LengthFilter(maxLength);
+            nameEditText.setFilters(filterArray);
+            layout.addView(nameEditText);
+            nameEditText.setVisibility(View.INVISIBLE);
+
+            EditBtn = new WpadImageView(context, TOUCH_KIND.BUTTON, 78, 78, R.drawable.btn_edit_normal, R.drawable.btn_edit_pressed, ID.heatingV2Popup.button.EDIT);
+            int leftMargin = Common.PopupAlarmMarginLEFT(153);
+            if (PopupActivity.getManualUse()) leftMargin = Common.PopupAlarmMarginLEFT(269);
+            ViewRegistration(layout, EditBtn, leftMargin, Common.PopupNomalMarginTOP(68));
+
+            inputMethodManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
+        }
+
         // 현재탭은 이미지 변경이 아닌 텍스트 색 변경으로 표현하도록 한다(신규 월패드)
 
         TabDefaultText = new WpadTextView(context, true, 174, 68, Gravity.CENTER, Color.rgb(0xff, 0x7d, 0x00), Common.fontsize._30, false, ID.heatingV2Popup.text.TAB_DEFAULT);
@@ -580,6 +635,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
             Device_SetPollingMode(POLLING_MODE.Normal, (byte) 0);
         }
 
+        if (wallpadStatusData != null) wallpadStatusData.closeDB();
+
         // (노말모드) 설정온도 변경이 있었을 경우 설정온도 셋팅
         if (OPERATION_MODE == Common.MODE_NOMAL) {
             Device_NowTempSet();
@@ -599,6 +656,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
 
         // (영업샘플모드) 변경 데이터 전달
         if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) Sample_setPopupResult();
+        if (edit_state == EDIT_STATE.Normal) setPopupResult();
     }
 
     // =================================================================================================
@@ -674,7 +732,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
                     Sound().Play(SND.effect.TOUCH_LATCHED);
 
                     if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) Sample_setPopupResult();
-
+                    if (edit_state == EDIT_STATE.Normal) setPopupResult();
                     super.finish();
                 }
                 else if (TargetId == ID.heatingV2Popup.button.MANUAL)
@@ -687,6 +745,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
                 else if (TargetId == ID.heatingV2Popup.button.ROOMSEL_LEFT) {
                     DebugLogOutput("onTouchEvent [ROOMSEL_LEFT] BUTTON !!!");
                     Sound().Play(SND.effect.TOUCH_LATCHED);
+                    edit_state = EDIT_STATE.Normal;
+                    setEditStatus();
 
                     if (OPERATION_MODE == Common.MODE_NOMAL) {
                         Device_NowTempSet();
@@ -711,6 +771,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
                 else if (TargetId == ID.heatingV2Popup.button.ROOMSEL_RIGHT) {
                     DebugLogOutput("onTouchEvent [ROOMSEL_RIGHT] BUTTON !!!");
                     Sound().Play(SND.effect.TOUCH_LATCHED);
+                    edit_state = EDIT_STATE.Normal;
+                    setEditStatus();
 
                     if (OPERATION_MODE == Common.MODE_NOMAL) {
                         Device_NowTempSet();
@@ -732,6 +794,8 @@ public class HeatingV2PopupScreen extends WpadScreen {
                 } else if ((TargetId >= ID.heatingV2Popup.text.TAB_DEFAULT) && (TargetId <= ID.heatingV2Popup.text.TAB_SLEEP)) {
                     int index = TargetId - ID.heatingV2Popup.text.TAB_DEFAULT;
                     DebugLogOutput("onTouchEvent [TAB_" + (index + 1) + "] BUTTON !!!");
+                    edit_state = EDIT_STATE.Normal;
+                    setEditStatus();
 
                     if (mCurrentTabStatus != TargetId) {
                         Sound().Play(SND.effect.TOUCH_LATCHED);
@@ -749,6 +813,10 @@ public class HeatingV2PopupScreen extends WpadScreen {
                         Draw_TabChange(TargetId);
                         drawUpdate((byte) mCurrentRoomIndex);
                     }
+                } else if (TargetId == ID.heatingV2Popup.button.EDIT) {
+                    Log.d(TAG, "[onTouchEvent] EDIT BUTTON");
+                    Sound().Play(SND.effect.TOUCH_LATCHED);
+                    editRoomName();
                 }
             }
         } else if ((TargetId >= ID.heatingV2Popup.tabDefault.BASE) && (TargetId < ID.heatingV2Popup.tabReserbation.BASE)) {
@@ -977,8 +1045,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
                     Log.i(TAG, "[drawUpdate] (index != Common.INDEX_ALL) && (index != (byte) mCurrentRoomIndex)");
                     return;
                 }
-                //int pos = ROOM_POS[index];
-                //HeatingV2.RoomData roomData = mData.heatingV2.Device.Room[pos];
+
                 HeatingV2.RoomData roomData = mData.heatingV2.Device.Room[mCurrentRoomIndex];
 
                 // 운전모드 , 밸브상태 갱신
@@ -1343,6 +1410,65 @@ public class HeatingV2PopupScreen extends WpadScreen {
         else TimeBtnArray[index].setButtonDefaultImageID();
     }
 
+    /**
+     * 룸 명칭을 편집한다.
+     */
+    private void editRoomName() {
+        Log.d(TAG, "[editRoomName] edit_state [" + edit_state + "]");
+        if (edit_state == EDIT_STATE.Normal) {
+            edit_state = EDIT_STATE.Edit;
+            setEditStatus();
+        } else if (edit_state == EDIT_STATE.Edit) {
+
+            String editNameRoom = nameEditText.getText().toString();
+            if (editNameRoom.equals("")) {
+                Sound().Play(SND.effect.TOUCH_UNLATCHED);
+                Toast.makeText(getContext(), "방 명칭을 정확히 입력하세요.", Toast.LENGTH_SHORT).show();
+            } else {
+                edit_state = EDIT_STATE.Normal;
+                setEditStatus();
+                if (!editNameRoom.equals(originRoomName)) {
+                    if (!wallpadStatusData.GetRoomNameChangeByUser(define.ROOM_NAME_HEATING))
+                        wallpadStatusData.SetRoomNameChangeByUser(1, define.ROOM_NAME_HEATING); // 사용자에 의해 방명칭 수정시 1로 저장 (추후 방명칭 변경 여부 판단 기준)
+                }
+                mRoomNameList[mCurrentRoomIndex] = editNameRoom;
+                if (wallpadStatusData.SetDevRoomNameList(mRoomNameList, define.ROOM_NAME_HEATING) < 0) {
+                    wallpadStatusData.GetDevRoomNameList(define.ROOM_NAME_HEATING);
+                    int nRet = wallpadStatusData.SetDevRoomNameList(mRoomNameList, define.ROOM_NAME_HEATING);
+                    Log.d(TAG, "[editRoomName] nRet [" + nRet + "]");
+                }
+                TitleText.setText(editNameRoom);
+                setPopupResult();
+                inputMethodManager.hideSoftInputFromWindow(nameEditText.getWindowToken(), 0);
+
+            }
+        } else {
+            Log.w(TAG, "[editRoomName] Not invalid EDIT_STATE [" + edit_state + "]");
+        }
+    }
+
+    private void setEditStatus() {
+        Log.d(TAG, "[setEditStatus] edit_state [" + edit_state + "]");
+        if (edit_state == EDIT_STATE.Normal) {
+            if (EditBtn != null) EditBtn.setImageChange(R.drawable.btn_edit_normal, R.drawable.btn_edit_pressed);
+            if (nameEditText != null) nameEditText.setVisibility(View.INVISIBLE);
+            if (TitleText != null) {
+                TitleText.setVisibility(View.VISIBLE);
+                TitleText.bringToFront();
+            }
+        } else if (edit_state == EDIT_STATE.Edit) {
+            if (EditBtn != null) EditBtn.setImageChange(R.drawable.btn_edit_ok_normal, R.drawable.btn_edit_ok_pressed);
+            if (nameEditText != null) {
+                nameEditText.setText(TitleText.getText().toString());
+                nameEditText.setVisibility(View.VISIBLE);
+                nameEditText.bringToFront();
+            }
+            if (TitleText != null) TitleText.setVisibility(View.INVISIBLE);
+        } else {
+            Log.w(TAG, "[setEditStatus] Not invalid EDIT_STATE [" + edit_state + "]");
+        }
+    }
+
     // =================================================================================================
     // [[ Device ]] region
     // =================================================================================================
@@ -1885,6 +2011,16 @@ public class HeatingV2PopupScreen extends WpadScreen {
         Device_SetSleep((byte) mCurrentRoomIndex, SetTemp, SetTime);
     }
 
+    private void setPopupResult() {
+        Intent data = new Intent();
+
+        // SCREEN
+        data.putExtra("SCREEN", ID.screen.HeatingV2PopupScreen);
+        data.putExtra("REFRESH", true);
+
+        super.setPopupResult(data);
+    }
+
     // =================================================================================================
     // [[ Sample ]] region
     // =================================================================================================
@@ -1983,6 +2119,7 @@ public class HeatingV2PopupScreen extends WpadScreen {
         }
 
         data.putExtra("SCREEN", ID.screen.HeatingV2PopupScreen);
+        data.putExtra("SAMPLE_CTRL", true);
         data.putExtra("CURTEMP_ARRAY", CurTempArray);
         data.putExtra("SETTEMP_ARRAY", SetTempArray);
         data.putExtra("MODE_ARRAY", ModeArray);