Pārlūkot izejas kodu

UI 순서 변경

jslee(madeinlab) 3 gadi atpakaļ
vecāks
revīzija
82abf80aae

+ 32 - 4
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconMainScreen.java

@@ -14,6 +14,7 @@ import android.view.WindowManager;
 import android.widget.LinearLayout;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.RelativeLayout;
 
 
+import com.artncore.WallPadDataMgr.WallpadDeviceSet;
 import com.artncore.WallPadDataMgr.WallpadStatusData;
 import com.artncore.WallPadDataMgr.WallpadStatusData;
 import com.artncore.commons.DataClasses;
 import com.artncore.commons.DataClasses;
 import com.artncore.commons.DataClasses.KnxSystemAircon;
 import com.artncore.commons.DataClasses.KnxSystemAircon;
@@ -310,6 +311,32 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
             Sample_DataDefaultSetting();
             Sample_DataDefaultSetting();
         }
         }
 
 
+        WallpadDeviceSet devSet = new WallpadDeviceSet(this.getContext());
+        String[] strValue = devSet.GetSettingData("UI순서");
+        devSet.closeDB();
+
+        // 현대건설 더 펜트하우스 서버에서 설정된 UI 순서를 이용하도록 한다.
+        if( strValue != null ) {
+            //String strLight = strValue[1].substring( (strValue[1].indexOf("조명(") + 3) , (strValue[1].indexOf(")난방(")));
+            //String strHeating = strValue[1].substring( (strValue[1].indexOf("난방(") + 3) , (strValue[1].indexOf(")에어컨(")));
+            String strAircon = strValue[1].substring( (strValue[1].indexOf("에어컨(") + 4) , (strValue[1].indexOf("))")));
+            //DebugLogOutput("[Create] - room name strlight "  + strLight);
+            //DebugLogOutput("[Create] - room name strHeating "  + strHeating);
+            //DebugLogOutput("[Create] - room name strAircon "  + strAircon);
+
+            int strAirconCount = Integer.valueOf(strAircon.substring(0, strAircon.indexOf(":")));
+
+            if(strAirconCount==mData.systemAircon.Device.info.InsideAirconCount){
+                //개수가 일치하는 경우에 적용
+                strAircon = strAircon.substring(strAircon.indexOf(":")+1);
+                String[] strDataSeq = strAircon.split("_");
+
+                for (int i = 0; i < strDataSeq.length; i++) {
+                    ROOM_POS[i] = Integer.valueOf(strDataSeq[i])-1;
+                }
+            }
+        }
+
         // 3. Image Create
         // 3. Image Create
         KnxSystemAircon.Info info = mData.systemAircon.Device.info;
         KnxSystemAircon.Info info = mData.systemAircon.Device.info;
         TotalPageNum = (info.InsideAirconCount / ROOM_CNT) + (((info.InsideAirconCount % ROOM_CNT) > 0) ? 1 : 0);
         TotalPageNum = (info.InsideAirconCount / ROOM_CNT) + (((info.InsideAirconCount % ROOM_CNT) > 0) ? 1 : 0);
@@ -692,15 +719,16 @@ public class KnxSystemAirconMainScreen extends WpadScreen {
 
 
                 if (OPERATION_MODE == Common.MODE_NOMAL)
                 if (OPERATION_MODE == Common.MODE_NOMAL)
                 {
                 {
-                    byte hOnOff = mData.systemAircon.Device.Aircon[index].OnOff;
+                    int pos = ROOM_POS[index];
+                    byte hOnOff = mData.systemAircon.Device.Aircon[pos].OnOff;
                     if(hOnOff== KnxSystemAircon.ONOFF.AirconOFF)
                     if(hOnOff== KnxSystemAircon.ONOFF.AirconOFF)
                         hOnOff= KnxSystemAircon.ONOFF.AirconON;
                         hOnOff= KnxSystemAircon.ONOFF.AirconON;
                     else
                     else
                         hOnOff= KnxSystemAircon.ONOFF.AirconOFF;
                         hOnOff= KnxSystemAircon.ONOFF.AirconOFF;
-                    byte volume = mData.systemAircon.Device.Aircon[index].Volume;
-                    byte mode = mData.systemAircon.Device.Aircon[index].Mode;
+                    byte volume = mData.systemAircon.Device.Aircon[pos].Volume;
+                    byte mode = mData.systemAircon.Device.Aircon[pos].Mode;
                     int hMode = (int) (hOnOff+(volume<<2)+(mode<<4));
                     int hMode = (int) (hOnOff+(volume<<2)+(mode<<4));
-                    int ret = Device_SetEachRoomStatus((byte) index, hMode, mData.systemAircon.Device.Aircon[index].SetTemp);
+                    int ret = Device_SetEachRoomStatus((byte) pos, hMode, mData.systemAircon.Device.Aircon[pos].SetTemp);
                     if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
                     if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
                     else Sound().Play(SND.effect.TOUCH_UNLATCHED);
                     else Sound().Play(SND.effect.TOUCH_UNLATCHED);
                 }
                 }

+ 50 - 23
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_aircon/KnxSystemAirconPopupScreen.java

@@ -70,6 +70,7 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
     private int OPERATION_MODE = -1;
     private int OPERATION_MODE = -1;
     private KnxSystemAirconAPI airconAPI;
     private KnxSystemAirconAPI airconAPI;
     private int mCurrentRoomIndex = 0;
     private int mCurrentRoomIndex = 0;
+    private int mCurrentOriginRoomIndex = 0;
     private String[] mVolumeString = new String[]{"자동", "약", "중", "강"};
     private String[] mVolumeString = new String[]{"자동", "약", "중", "강"};
     private int[] mVolumeImgID = new int[]{R.drawable.wind_p_4, R.drawable.wind_p_1, R.drawable.wind_p_2, R.drawable.wind_p_3};
     private int[] mVolumeImgID = new int[]{R.drawable.wind_p_4, R.drawable.wind_p_1, R.drawable.wind_p_2, R.drawable.wind_p_3};
     //"모드가 자동->냉방->제습->송풍->난방" 인 경우 count를 5로 한다. 현재 난방은 제거하므로 4로 한다.
     //"모드가 자동->냉방->제습->송풍->난방" 인 경우 count를 5로 한다. 현재 난방은 제거하므로 4로 한다.
@@ -95,12 +96,48 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
 
 
         mData = new Data();
         mData = new Data();
 
 
+        // 2. Device API Load & Update
+        DebugLogOutput("[Create] - Step2 : Device API Load & Update");
+        if (OPERATION_MODE == Common.MODE_NOMAL) {
+            DebugLogOutput("OPERATION_MODE = MODE_NOMAL");
+            if (Device_ApiLoad(wpapi) >= 0) {
+                Device_Update(Common.INDEX_ALL, false);
+            }
+        } else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
+            DebugLogOutput("OPERATION_MODE = MODE_BUSINESS_SAMPLE");
+        } else {
+            Log.e(TAG, "OPERATION_MODE : " + OPERATION_MODE + " Out of range !!!");
+        }
+
+        WallpadDeviceSet devSet = new WallpadDeviceSet(this.getContext());
+        String[] strValue = devSet.GetSettingData("UI순서");
+        devSet.closeDB();
+
+        // 현대건설 더 펜트하우스 서버에서 설정된 UI 순서를 이용하도록 한다.
+        if( strValue != null ) {
+            String strAircon = strValue[1].substring( (strValue[1].indexOf("에어컨(") + 4) , (strValue[1].indexOf("))")));
+
+            int strAirconCount = Integer.valueOf(strAircon.substring(0, strAircon.indexOf(":")));
+
+            if(strAirconCount==mData.airconData.Device.info.InsideAirconCount){
+                //개수가 일치하는 경우에 적용
+                strAircon = strAircon.substring(strAircon.indexOf(":")+1);
+                String[] strDataSeq = strAircon.split("_");
+
+                for (int i = 0; i < strDataSeq.length; i++) {
+                    ROOM_POS[i] = Integer.valueOf(strDataSeq[i])-1;
+                }
+            }
+        }
+
         Intent intent = super.getScreenIntent();
         Intent intent = super.getScreenIntent();
         if (intent != null) {
         if (intent != null) {
             // 시작할 룸인덱스
             // 시작할 룸인덱스
             int RoomIndex = intent.getIntExtra("ROOM_INDEX", -1);
             int RoomIndex = intent.getIntExtra("ROOM_INDEX", -1);
             if (RoomIndex > 0) {
             if (RoomIndex > 0) {
-                mCurrentRoomIndex = RoomIndex;
+                //mCurrentRoomIndex = RoomIndex;
+                mCurrentOriginRoomIndex = RoomIndex;
+                mCurrentRoomIndex = ROOM_POS[RoomIndex];
             }
             }
 
 
             // 방명칭
             // 방명칭
@@ -139,18 +176,6 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
             return;
             return;
         }
         }
 
 
-        // 2. Device API Load & Update
-        DebugLogOutput("[Create] - Step2 : Device API Load & Update");
-        if (OPERATION_MODE == Common.MODE_NOMAL) {
-            DebugLogOutput("OPERATION_MODE = MODE_NOMAL");
-            if (Device_ApiLoad(wpapi) >= 0) {
-                Device_Update(Common.INDEX_ALL, false);
-            }
-        } else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
-            DebugLogOutput("OPERATION_MODE = MODE_BUSINESS_SAMPLE");
-        } else {
-            Log.e(TAG, "OPERATION_MODE : " + OPERATION_MODE + " Out of range !!!");
-        }
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         // 3. Common (Image & Button & Text) Create
         // 3. Common (Image & Button & Text) Create
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -287,17 +312,19 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
             } else if (nTargetId == ID.KNxSystemAirconPopup.button.ROOM_PREV) {
             } else if (nTargetId == ID.KNxSystemAirconPopup.button.ROOM_PREV) {
                 DebugLogOutput("onTouchEvent [ROOM_PREV] BUTTON !!!");
                 DebugLogOutput("onTouchEvent [ROOM_PREV] BUTTON !!!");
                 Sound().Play(SND.effect.TOUCH_LATCHED);
                 Sound().Play(SND.effect.TOUCH_LATCHED);
-                mCurrentRoomIndex--;
-                if (mCurrentRoomIndex < 0)
-                    mCurrentRoomIndex = (int) (mData.airconData.Device.info.InsideAirconCount - 1);
+                mCurrentOriginRoomIndex--;
+                if (mCurrentOriginRoomIndex < 0)
+                    mCurrentOriginRoomIndex = (int) (mData.airconData.Device.info.InsideAirconCount - 1);
+                mCurrentRoomIndex = ROOM_POS[mCurrentOriginRoomIndex];
                 Draw_TitleChange(mCurrentRoomIndex);
                 Draw_TitleChange(mCurrentRoomIndex);
                 Draw_Update((byte) mCurrentRoomIndex);
                 Draw_Update((byte) mCurrentRoomIndex);
             } else if (nTargetId == ID.KNxSystemAirconPopup.button.ROOM_NEXT) {
             } else if (nTargetId == ID.KNxSystemAirconPopup.button.ROOM_NEXT) {
                 DebugLogOutput("onTouchEvent [ROOM_PREV] BUTTON !!!");
                 DebugLogOutput("onTouchEvent [ROOM_PREV] BUTTON !!!");
                 Sound().Play(SND.effect.TOUCH_LATCHED);
                 Sound().Play(SND.effect.TOUCH_LATCHED);
-                mCurrentRoomIndex++;
-                if (mCurrentRoomIndex >= (int) mData.airconData.Device.info.InsideAirconCount)
-                    mCurrentRoomIndex = 0;
+                mCurrentOriginRoomIndex++;
+                if (mCurrentOriginRoomIndex >= (int) mData.airconData.Device.info.InsideAirconCount)
+                    mCurrentOriginRoomIndex = 0;
+                mCurrentRoomIndex = ROOM_POS[mCurrentOriginRoomIndex];
                 Draw_TitleChange(mCurrentRoomIndex);
                 Draw_TitleChange(mCurrentRoomIndex);
                 Draw_Update((byte) mCurrentRoomIndex);
                 Draw_Update((byte) mCurrentRoomIndex);
             } else if (nTargetId == ID.KNxSystemAirconPopup.button.ONOFF) {
             } else if (nTargetId == ID.KNxSystemAirconPopup.button.ONOFF) {
@@ -357,9 +384,9 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
         if ((index != Common.INDEX_ALL) && (index != (byte) mCurrentRoomIndex)) {
         if ((index != Common.INDEX_ALL) && (index != (byte) mCurrentRoomIndex)) {
             return;
             return;
         }
         }
-        int pos = ROOM_POS[index];
-        KnxSystemAircon.AirData roomData = mData.airconData.Device.Aircon[pos];
-        //KnxSystemAircon.AirData roomData = mData.airconData.Device.Aircon[mCurrentRoomIndex];
+        //int pos = ROOM_POS[index];
+        //KnxSystemAircon.AirData roomData = mData.airconData.Device.Aircon[pos];
+        KnxSystemAircon.AirData roomData = mData.airconData.Device.Aircon[mCurrentRoomIndex];
 
 
         // 운전모드 갱신
         // 운전모드 갱신
         //madeinLab 현재온도와 설정온도에 따라 자동으로 에어컨이 OFF로 전환되어야 하는지 확인이 필요함.
         //madeinLab 현재온도와 설정온도에 따라 자동으로 에어컨이 OFF로 전환되어야 하는지 확인이 필요함.
@@ -397,7 +424,7 @@ public class KnxSystemAirconPopupScreen extends WpadScreen {
         if (TitleText == null) return;
         if (TitleText == null) return;
 
 
         if ((index < 0) || (index >= 15)) return;
         if ((index < 0) || (index >= 15)) return;
-        index = ROOM_POS[index];
+        //index = ROOM_POS[index];
         TitleText.setText(mRoomNameList[index]);
         TitleText.setText(mRoomNameList[index]);
     }
     }
 
 

+ 28 - 2
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2MainScreen.java

@@ -79,8 +79,8 @@ public class HeatingV2MainScreen extends WpadScreen {
     private int ROOM_CNT = ROOM_CNT_NORMAL;   // 한 화면에 표시하는 방개수
     private int ROOM_CNT = ROOM_CNT_NORMAL;   // 한 화면에 표시하는 방개수
     private final static int ROOM_CNT_EASYMODE = 4;
     private final static int ROOM_CNT_EASYMODE = 4;
     private final static int ROOM_CNT_NORMAL = 6;
     private final static int ROOM_CNT_NORMAL = 6;
-    //private final int[] ROOM_POS = {0,1,2,3,4,5,6,7,8,9,10,11,12};
-    private final int[] ROOM_POS = {7,6,5,4,3,2,1,0,8,9,10,11,12};
+    private final int[] ROOM_POS = {0,1,2,3,4,5,6,7,8,9,10,11,12};
+    //private final int[] ROOM_POS = {7,6,5,4,3,2,1,0,8,9,10,11,12};
 
 
 
 
     int nDistributionPanelType = Version.DISTRIBUTION_MODEL.OTHER;
     int nDistributionPanelType = Version.DISTRIBUTION_MODEL.OTHER;
@@ -380,6 +380,32 @@ public class HeatingV2MainScreen extends WpadScreen {
             Log.e(TAG, "OPERATION_MODE : " + OPERATION_MODE + " Out of range !!!");
             Log.e(TAG, "OPERATION_MODE : " + OPERATION_MODE + " Out of range !!!");
         }
         }
 
 
+        WallpadDeviceSet devSet = new WallpadDeviceSet(this.getContext());
+        String[] strValue = devSet.GetSettingData("UI순서");
+        devSet.closeDB();
+
+        // 현대건설 더 펜트하우스 서버에서 설정된 UI 순서를 이용하도록 한다.
+        if( strValue != null ) {
+            //String strLight = strValue[1].substring( (strValue[1].indexOf("조명(") + 3) , (strValue[1].indexOf(")난방(")));
+            String strHeating = strValue[1].substring( (strValue[1].indexOf("난방(") + 3) , (strValue[1].indexOf(")에어컨(")));
+            //String strAircon = strValue[1].substring( (strValue[1].indexOf("에어컨(") + 4) , (strValue[1].indexOf("))")));
+            //DebugLogOutput("[Create] - room name strlight "  + strLight);
+            //DebugLogOutput("[Create] - room name strHeating "  + strHeating);
+            //DebugLogOutput("[Create] - room name strAircon "  + strAircon);
+
+            int strHeatingCount = Integer.valueOf(strHeating.substring(0, strHeating.indexOf(":")));
+
+            if(strHeatingCount==mData.heatingV2.Device.info.RoomCount){
+                //개수가 일치하는 경우에 적용
+                strHeating = strHeating.substring(strHeating.indexOf(":")+1);
+                String[] strDataSeq = strHeating.split("_");
+
+                for (int i = 0; i < strDataSeq.length; i++) {
+                    ROOM_POS[i] = Integer.valueOf(strDataSeq[i])-1;
+                }
+            }
+        }
+
         // 임시로 샘플 데이터를 통해 화면에 출력하도록 한다.
         // 임시로 샘플 데이터를 통해 화면에 출력하도록 한다.
         //Sample_DataDefaultSetting();
         //Sample_DataDefaultSetting();
 
 

+ 39 - 17
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_heating/HeatingV2PopupScreen.java

@@ -188,6 +188,45 @@ public class HeatingV2PopupScreen extends WpadScreen {
         UX_MODE = ((PopupActivity) context).GetEasyModeUXUse() ? Common.UX_EASY_MODE : Common.UX_NORMAL_MODE;
         UX_MODE = ((PopupActivity) context).GetEasyModeUXUse() ? Common.UX_EASY_MODE : Common.UX_NORMAL_MODE;
         Log.d(TAG, "[HeatingV2PopupScreen] UX_MODE [" + UX_MODE + "]");
         Log.d(TAG, "[HeatingV2PopupScreen] UX_MODE [" + UX_MODE + "]");
 
 
+        // 2. Device API Load & Update
+        DebugLogOutput("[Create] - Step2 : Device API Load & Update");
+        if (OPERATION_MODE == Common.MODE_NOMAL) {
+            DebugLogOutput("OPERATION_MODE = MODE_NOMAL");
+            if (Device_ApiLoad(wpapi) >= 0) {
+                Device_Update(Common.INDEX_ALL, false);
+                Device_SetPollingMode(POLLING_MODE.FixRoom, (byte) mCurrentRoomIndex);
+            } else {// api load error
+                Log.i(TAG, "HeatingV2API == Passed HeatingV2API");
+            }
+        } else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
+            DebugLogOutput("OPERATION_MODE = MODE_BUSINESS_SAMPLE");
+        } else {
+            Log.e(TAG, "OPERATION_MODE : " + OPERATION_MODE + " Out of range !!!");
+        }
+
+        WallpadDeviceSet devSet = new WallpadDeviceSet(this.getContext());
+        String[] strValue = devSet.GetSettingData("UI순서");
+        devSet.closeDB();
+
+        // 현대건설 더 펜트하우스 서버에서 설정된 UI 순서를 이용하도록 한다.
+        if( strValue != null ) {
+            //String strLight = strValue[1].substring( (strValue[1].indexOf("조명(") + 3) , (strValue[1].indexOf(")난방(")));
+            String strHeating = strValue[1].substring( (strValue[1].indexOf("난방(") + 3) , (strValue[1].indexOf(")에어컨(")));
+            //String strAircon = strValue[1].substring( (strValue[1].indexOf("에어컨(") + 4) , (strValue[1].indexOf("))")));
+
+            int strHeatingCount = Integer.valueOf(strHeating.substring(0, strHeating.indexOf(":")));
+
+            if(strHeatingCount==mData.heatingV2.Device.info.RoomCount){
+                //개수가 일치하는 경우에 적용
+                strHeating = strHeating.substring(strHeating.indexOf(":")+1);
+                String[] strDataSeq = strHeating.split("_");
+
+                for (int i = 0; i < strDataSeq.length; i++) {
+                    ROOM_POS[i] = Integer.valueOf(strDataSeq[i])-1;
+                }
+            }
+        }
+
         Intent intent = super.getScreenIntent();
         Intent intent = super.getScreenIntent();
         if (intent != null) {
         if (intent != null) {
             // 시작할 룸인덱스
             // 시작할 룸인덱스
@@ -241,23 +280,6 @@ public class HeatingV2PopupScreen extends WpadScreen {
             return;
             return;
         }
         }
 
 
-
-        // 2. Device API Load & Update
-        DebugLogOutput("[Create] - Step2 : Device API Load & Update");
-        if (OPERATION_MODE == Common.MODE_NOMAL) {
-            DebugLogOutput("OPERATION_MODE = MODE_NOMAL");
-            if (Device_ApiLoad(wpapi) >= 0) {
-                Device_Update(Common.INDEX_ALL, false);
-                Device_SetPollingMode(POLLING_MODE.FixRoom, (byte) mCurrentRoomIndex);
-            } else {// api load error
-                Log.i(TAG, "HeatingV2API == Passed HeatingV2API");
-            }
-        } else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
-            DebugLogOutput("OPERATION_MODE = MODE_BUSINESS_SAMPLE");
-        } else {
-            Log.e(TAG, "OPERATION_MODE : " + OPERATION_MODE + " Out of range !!!");
-        }
-
         /**
         /**
          * 방명칭 수정코드 (JEFF, 2020.07.20)
          * 방명칭 수정코드 (JEFF, 2020.07.20)
          * 사용자 설정화면에서 방명칭이 수정되어 실제 방개수보다 방명칭 개수가 적은 경우
          * 사용자 설정화면에서 방명칭이 수정되어 실제 방개수보다 방명칭 개수가 적은 경우

+ 30 - 2
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_light/LightKnxMainScreen.java

@@ -177,8 +177,8 @@ public class LightKnxMainScreen extends WpadScreen {
     private static final int EM_TYPE = 0;
     private static final int EM_TYPE = 0;
     private static final int SWITCH_TYPE = 1;
     private static final int SWITCH_TYPE = 1;
 
 
-    //private final int[] ROOM_POS = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
-    private final int[] ROOM_POS = {10,11,12,13,14,15,16,7,8,9,0,1,2,3,4,5,6,17,18,19,20};
+    private final int[] ROOM_POS = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
+    //private final int[] ROOM_POS = {10,11,12,13,14,15,16,7,8,9,0,1,2,3,4,5,6,17,18,19,20};
 
 
     private String[] mDefaultRoomNameList = new String[]{"거실", "거실", "침실4", "침실1", "파우더룸", "침실2", "주방1", "침실3",
     private String[] mDefaultRoomNameList = new String[]{"거실", "거실", "침실4", "침실1", "파우더룸", "침실2", "주방1", "침실3",
             "복도1", "욕실1", "욕실2","보조주방","욕실3","욕실4","욕실5","복도2", "현관", "신발장", "창고", "주방2", "간이주방", "서재1", "작업실","드레스룸3","추가룸1","추가룸2","추가룸3","추가룸4","추가룸5"};
             "복도1", "욕실1", "욕실2","보조주방","욕실3","욕실4","욕실5","복도2", "현관", "신발장", "창고", "주방2", "간이주방", "서재1", "작업실","드레스룸3","추가룸1","추가룸2","추가룸3","추가룸4","추가룸5"};
@@ -314,6 +314,8 @@ public class LightKnxMainScreen extends WpadScreen {
         wallpaddbmgr.AddressSet addc = wd.getAddressMGR(); // DB에서 동호 정보 받아옴
         wallpaddbmgr.AddressSet addc = wd.getAddressMGR(); // DB에서 동호 정보 받아옴
         wd.closeDB();
         wd.closeDB();
 
 
+
+
         // 동, 호, ip 정보 저장
         // 동, 호, ip 정보 저장
         myIP = addc.IPAddress;
         myIP = addc.IPAddress;
         myDong = addc.Dong;
         myDong = addc.Dong;
@@ -348,6 +350,32 @@ public class LightKnxMainScreen extends WpadScreen {
 
 
         AllEMcount = mData.MasterController.Info.Light_SwitchCount + mData.MasterController.Info.Bad_EnergyMeterCount + mData.MasterController.Info.Liv_EnergyMeterCount;
         AllEMcount = mData.MasterController.Info.Light_SwitchCount + mData.MasterController.Info.Bad_EnergyMeterCount + mData.MasterController.Info.Liv_EnergyMeterCount;
 
 
+
+        WallpadDeviceSet devSet = new WallpadDeviceSet(this.getContext());
+        String[] strValue = devSet.GetSettingData("UI순서");
+        devSet.closeDB();
+
+        // 현대건설 더 펜트하우스 서버에서 설정된 UI 순서를 이용하도록 한다.
+        if( strValue != null ) {
+            String strLight = strValue[1].substring( (strValue[1].indexOf("조명(") + 3) , (strValue[1].indexOf(")난방(")));
+            //String strHeating = strValue[1].substring( (strValue[1].indexOf("난방(") + 3) , (strValue[1].indexOf(")에어컨(")));
+            //String strAircon = strValue[1].substring( (strValue[1].indexOf("에어컨(") + 4) , (strValue[1].indexOf("))")));
+            //DebugLogOutput("[Create] - room name strlight "  + strLight);
+            //DebugLogOutput("[Create] - room name strHeating "  + strHeating);
+            //DebugLogOutput("[Create] - room name strAircon "  + strAircon);
+
+            int strLightCount = Integer.valueOf(strLight.substring(0, strLight.indexOf(":")));
+
+            if(strLightCount==(mData.MasterController.Info.Bad_EnergyMeterCount + mData.MasterController.Info.Liv_EnergyMeterCount)){
+                //개수가 일치하는 경우에 적용
+                strLight = strLight.substring(strLight.indexOf(":")+1);
+                String[] strDataSeq = strLight.split("_");
+
+                for (int i = 0; i < strDataSeq.length; i++) {
+                    ROOM_POS[i] = Integer.valueOf(strDataSeq[i])-1;
+                }
+            }
+        }
         //EMcount 개수만큼 방이름을 만든다.
         //EMcount 개수만큼 방이름을 만든다.
         mRoomName = new ArrayList<String>();
         mRoomName = new ArrayList<String>();
         Log.i(TAG, "AllEMcount = " + AllEMcount);
         Log.i(TAG, "AllEMcount = " + AllEMcount);

+ 46 - 18
WallPadHomeCtrl/src/main/java/kr/co/icontrols/wallpadhomectrl/screen/screen_light/LightKnxPopupRoomScreen.java

@@ -88,8 +88,8 @@ public class LightKnxPopupRoomScreen extends WpadScreen {
     public static final int min = 1;
     public static final int min = 1;
     public int SeekBarValue = 1;
     public int SeekBarValue = 1;
 
 
-    //private final int[] ROOM_POS = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
-    private final int[] ROOM_POS = {10,11,12,13,14,15,16,7,8,9,0,1,2,3,4,5,6,17,18,19,20};
+    private final int[] ROOM_POS = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
+    //private final int[] ROOM_POS = {10,11,12,13,14,15,16,7,8,9,0,1,2,3,4,5,6,17,18,19,20};
 
 
 
 
     private String[] mDefaultRoomNameList = new String[]{"거실", "거실", "침실4", "침실1", "파우더룸", "침실2", "주방1", "침실3",
     private String[] mDefaultRoomNameList = new String[]{"거실", "거실", "침실4", "침실1", "파우더룸", "침실2", "주방1", "침실3",
@@ -229,6 +229,50 @@ public class LightKnxPopupRoomScreen extends WpadScreen {
         //OPERATION_MODE = Common.MODE_BUSINESS_SAMPLE;
         //OPERATION_MODE = Common.MODE_BUSINESS_SAMPLE;
         mData = new Data_KnxLiv();
         mData = new Data_KnxLiv();
 
 
+
+
+        // 2. Device API Load & Update
+        DebugLogOutput("[Create] - Step2 : Device API Load & Update");
+        if (OPERATION_MODE == Common.MODE_NOMAL) {
+            DebugLogOutput("OPERATION_MODE = MODE_NOMAL");
+            if (Device_ApiLoad(wpapi) >= 0) Device_Update(false, Common.INDEX_ALL);
+        } else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
+            DebugLogOutput("OPERATION_MODE = MODE_BUSINESS_SAMPLE");
+            // 샘플 데이터 로드
+            LoadSampleData_NewLiv();
+        } else {
+            DebugLogOutput("OPERATION_MODE = Other (" + OPERATION_MODE + " ... Change Mode -> MODE_NOMAL");
+            OPERATION_MODE = Common.MODE_NOMAL;
+        }
+
+        AllEMcount = mData.MasterController.Info.Light_SwitchCount + mData.MasterController.Info.Bad_EnergyMeterCount + mData.MasterController.Info.Liv_EnergyMeterCount;
+
+        WallpadDeviceSet devSet = new WallpadDeviceSet(this.getContext());
+        String[] strValue = devSet.GetSettingData("UI순서");
+        devSet.closeDB();
+
+        // 현대건설 더 펜트하우스 서버에서 설정된 UI 순서를 이용하도록 한다.
+        if( strValue != null ) {
+            String strLight = strValue[1].substring( (strValue[1].indexOf("조명(") + 3) , (strValue[1].indexOf(")난방(")));
+            //String strHeating = strValue[1].substring( (strValue[1].indexOf("난방(") + 3) , (strValue[1].indexOf(")에어컨(")));
+            //String strAircon = strValue[1].substring( (strValue[1].indexOf("에어컨(") + 4) , (strValue[1].indexOf("))")));
+            //DebugLogOutput("[Create] - room name strlight "  + strLight);
+            //DebugLogOutput("[Create] - room name strHeating "  + strHeating);
+            //DebugLogOutput("[Create] - room name strAircon "  + strAircon);
+
+            int strLightCount = Integer.valueOf(strLight.substring(0, strLight.indexOf(":")));
+
+            if(strLightCount==(mData.MasterController.Info.Bad_EnergyMeterCount + mData.MasterController.Info.Liv_EnergyMeterCount)){
+                //개수가 일치하는 경우에 적용
+                strLight = strLight.substring(strLight.indexOf(":")+1);
+                String[] strDataSeq = strLight.split("_");
+
+                for (int i = 0; i < strDataSeq.length; i++) {
+                    ROOM_POS[i] = Integer.valueOf(strDataSeq[i])-1;
+                }
+            }
+        }
+
         Intent intent = super.getScreenIntent();
         Intent intent = super.getScreenIntent();
         if (intent != null) {
         if (intent != null) {
             // 시작할 룸인덱스
             // 시작할 룸인덱스
@@ -249,22 +293,6 @@ public class LightKnxPopupRoomScreen extends WpadScreen {
             }
             }
         }
         }
 
 
-        // 2. Device API Load & Update
-        DebugLogOutput("[Create] - Step2 : Device API Load & Update");
-        if (OPERATION_MODE == Common.MODE_NOMAL) {
-            DebugLogOutput("OPERATION_MODE = MODE_NOMAL");
-            if (Device_ApiLoad(wpapi) >= 0) Device_Update(false, Common.INDEX_ALL);
-        } else if (OPERATION_MODE == Common.MODE_BUSINESS_SAMPLE) {
-            DebugLogOutput("OPERATION_MODE = MODE_BUSINESS_SAMPLE");
-            // 샘플 데이터 로드
-            LoadSampleData_NewLiv();
-        } else {
-            DebugLogOutput("OPERATION_MODE = Other (" + OPERATION_MODE + " ... Change Mode -> MODE_NOMAL");
-            OPERATION_MODE = Common.MODE_NOMAL;
-        }
-
-        AllEMcount = mData.MasterController.Info.Light_SwitchCount + mData.MasterController.Info.Bad_EnergyMeterCount + mData.MasterController.Info.Liv_EnergyMeterCount;
-
         // 3. Image Create
         // 3. Image Create
         DebugLogOutput("[Create] - Step3 : Image Create");
         DebugLogOutput("[Create] - Step3 : Image Create");
         Background = new WpadImageView(context, TOUCH_KIND.NONE, 990, 680, R.drawable.bg_popup, 0, ID.lightKnxPopupRoom.image.BACKGROUND);
         Background = new WpadImageView(context, TOUCH_KIND.NONE, 990, 680, R.drawable.bg_popup, 0, ID.lightKnxPopupRoom.image.BACKGROUND);