ConfigurePreset.java 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978
  1. package kr.co.icontrols.wallpadmain.popup;
  2. import com.artncore.WallPadDataMgr.WallpadStatusData;
  3. import com.artncore.commons.DataClasses;
  4. import com.artncore.commons.Sdb_DataClasses;
  5. import com.artncore.commons.define;
  6. import com.artncore.wallpadapi.Sdb_LivingRoomLightAPI;
  7. import com.artncore.wallpadapi.WallPadAPI;
  8. import android.content.Context;
  9. import android.content.Intent;
  10. import android.graphics.Bitmap;
  11. import android.graphics.BitmapFactory;
  12. import android.graphics.Color;
  13. import android.graphics.drawable.Drawable;
  14. import android.os.Handler;
  15. import android.os.Looper;
  16. import android.os.Message;
  17. import android.util.Log;
  18. import android.view.Gravity;
  19. import android.view.MotionEvent;
  20. import android.view.View;
  21. import android.widget.ImageView;
  22. import android.widget.RelativeLayout;
  23. import android.widget.SeekBar;
  24. import com.util.LogUtil;
  25. import kr.co.icontrols.wallpadmain.MainActivity;
  26. import kr.co.icontrols.wallpadmain.PopupActivity;
  27. import kr.co.icontrols.wallpadmain.R;
  28. import kr.co.icontrols.wallpadmain.declare.*;
  29. import kr.co.icontrols.wallpadmain.util.POSITION;
  30. import kr.co.icontrols.wallpadsupport.*;
  31. import kr.co.icontrols.wallpadsupport.WpadImageView.TOUCH_KIND;
  32. import kr.co.icontrols.wallpadsupport.WpadSound.SND;
  33. public class ConfigurePreset extends WpadScreen {
  34. String TAG = "ConfigurePreset";
  35. Context mContext;
  36. WpadImageView IMG_BACKGROUND;
  37. WpadImageView BTN_CLOSE, BTN_SAVE, BTN_CANCEL;
  38. WpadTextView TXT_TITLE, TXT_SUBTITLE_01, TXT_SUBTITLE_02;
  39. int nTitleSize = 35;
  40. int nSubTitleSize = 25;
  41. String[] strTitle = { "독서 모드 설정", "휴식 모드 설정", "영화 모드 설정", "사용자 모드 설정" };
  42. private int nLivinglightPresetID = 0 ;
  43. private String strPresetInfo = null; // "Preset ID/전원:디밍:색온도" Ex) 1/on:10:1
  44. // [Class]
  45. /**
  46. * 에너지미터 데이터
  47. **/
  48. private class EMData {
  49. Sdb_DataClasses.LivingEnergyMeterClass NewLivingEM;
  50. boolean ControlType; //false:밝기, true:색상
  51. public EMData() {
  52. ControlType = false;
  53. NewLivingEM = new Sdb_DataClasses.LivingEnergyMeterClass();
  54. }
  55. }
  56. private EMData mEMData = null;
  57. // [SeekBar Value]
  58. WpadImageView IMG_BACK_SEEKBAR_DIM;
  59. WpadImageView IMG_BACK_SEEKBAR_COLOR;
  60. SeekBar SEEKBAR_CTRL_LIGHT_DIM;
  61. SeekBar SEEKBAR_CTRL_LIGHT_COLOR;
  62. public static final int step = 1;
  63. public static final int max = 100;
  64. public static final int min = 10;
  65. public int DimSeekBarValue = 10;
  66. public int ColorSeekBarValue = 10;
  67. public String BR_CTRL_LIGHT_LIVINGROOM = "kr.co.icontrols.wallpadglobalscreen.BR_CTRL_LIGHT_LIVINGROOM";
  68. public String BR_WALLPAD_DIAL_GLOBALSCREEN_TOUCH = "WALLPAD_DIAL_GLOBALSCREEN_TOUCH";
  69. private WallPadAPI mWallPadAPI = null;
  70. private Sdb_LivingRoomLightAPI mSdb_LivingRoomLightAPI = null; // 거실에너지미터
  71. // private LivingRoomEnergyMeterV2API mLivingRoomEnergyMeterV2API = null; // 대외향 - 거실 조명제어기 API
  72. public ConfigurePreset(Context context, RelativeLayout layout, WallPadAPI wallpadapi) {
  73. super(context, layout);
  74. try {
  75. Log.d(TAG, "[ConfigurePreset] ========== START ==========");
  76. mContext = context;
  77. initInfo();
  78. mEMData = new EMData();
  79. if (loadDeviceAPI(wallpadapi) >= 0) updateDeviceStatus(false);
  80. else EMDriverCheckHandler.sendEmptyMessage(0);
  81. IMG_BACKGROUND = new WpadImageView(context, TOUCH_KIND.NONE, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACKGROUND).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACKGROUND).H, R.drawable.back_popup_04, R.drawable.back_popup_04, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACKGROUND);
  82. ViewRegistration(layout, IMG_BACKGROUND, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACKGROUND).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACKGROUND).Y);
  83. BTN_CLOSE = new WpadImageView(context, TOUCH_KIND.BUTTON, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CLOSE).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CLOSE).H, R.drawable.popup_btn_close_normal, R.drawable.popup_btn_close_pressed, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CLOSE);
  84. ViewRegistration(layout, BTN_CLOSE, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CLOSE).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CLOSE).Y);
  85. BTN_CLOSE.setTouchDelayMs(500);
  86. BTN_SAVE = new WpadImageView(context, TOUCH_KIND.BUTTON, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SAVE).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SAVE).H, R.drawable.popup_configurepreset_btn_save_normal, R.drawable.popup_configurepreset_btn_save_pressed, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SAVE);
  87. ViewRegistration(layout, BTN_SAVE, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SAVE).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SAVE).Y);
  88. BTN_SAVE.setTouchDelayMs(500);
  89. BTN_CANCEL = new WpadImageView(context, TOUCH_KIND.BUTTON, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CANCEL).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CANCEL).H, R.drawable.popup_configurepreset_btn_cancel_normal, R.drawable.popup_configurepreset_btn_cancel_pressed, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CANCEL);
  90. ViewRegistration(layout, BTN_CANCEL, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CANCEL).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CANCEL).Y);
  91. BTN_CANCEL.setTouchDelayMs(500);
  92. TXT_TITLE = new WpadTextView(context, false, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.TITLE).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.TITLE).H, Gravity.CENTER, Color.WHITE, nTitleSize, true, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.TITLE);
  93. ViewRegistration(layout, TXT_TITLE, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.TITLE).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.TITLE).Y);
  94. TXT_TITLE.setText(strTitle[nLivinglightPresetID - 1]);
  95. TXT_SUBTITLE_01 = new WpadTextView(context, false, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_01).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_01).H, Gravity.CENTER, Color.WHITE, nSubTitleSize, true, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_01);
  96. ViewRegistration(layout, TXT_SUBTITLE_01, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_01).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_01).Y);
  97. TXT_SUBTITLE_01.setText("밝기");
  98. TXT_SUBTITLE_02 = new WpadTextView(context, false, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_02).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_02).H, Gravity.CENTER, Color.WHITE, nSubTitleSize, true, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_02);
  99. ViewRegistration(layout, TXT_SUBTITLE_02, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_02).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_02).Y);
  100. TXT_SUBTITLE_02.setText("색온도");
  101. registerSeekbar();
  102. syncPresetValue(nLivinglightPresetID);
  103. } catch (RuntimeException re) {
  104. LogUtil.errorLogInfo("", TAG, re);
  105. }
  106. catch (Exception e) {
  107. Log.e(TAG, "[Exception] ConfigurePreset(Context context, RelativeLayout layout)");
  108. //e.printStackTrace();
  109. LogUtil.errorLogInfo("", TAG, e);
  110. }
  111. }
  112. private void initInfo() {
  113. try {
  114. Intent intent = super.getScreenIntent();
  115. int nPresetID = intent.getIntExtra(Common.LIVINGLIGHT_PRESET_ID , -1);
  116. nLivinglightPresetID = nPresetID;
  117. Log.d(TAG, "[initInfo] Common.LIVINGLIGHT_PRESET_ID : " + nLivinglightPresetID);
  118. } catch (RuntimeException re) {
  119. LogUtil.errorLogInfo("", TAG, re);
  120. }
  121. catch (Exception e) {
  122. Log.e(TAG, "[Exception] initInfo()");
  123. //e.printStackTrace();
  124. LogUtil.errorLogInfo("", TAG, e);
  125. }
  126. }
  127. private WallpadStatusData GetDB() {
  128. return ((PopupActivity)(super.getContext())).GetDBObj();
  129. }
  130. @Override
  131. protected void onClose() {
  132. try {
  133. savePresetValue(nLivinglightPresetID, DimSeekBarValue, ColorSeekBarValue);
  134. super.onClose();
  135. Log.d(TAG, "[onClose] ========== START ==========");
  136. } catch (RuntimeException re) {
  137. LogUtil.errorLogInfo("", TAG, re);
  138. }
  139. catch (Exception e) {
  140. Log.e(TAG, "[Exception] onClose()");
  141. //e.printStackTrace();
  142. LogUtil.errorLogInfo("", TAG, e);
  143. }
  144. }
  145. @Override
  146. protected void onTouchEvent(View v, MotionEvent event) {
  147. try {
  148. super.onTouchEvent(v, event);
  149. int nTargetID = v.getId();
  150. int nEvent = event.getAction();
  151. if (nEvent == MotionEvent.ACTION_UP) {
  152. if (nTargetID == ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CLOSE) {
  153. Sound().Play(SND.effect.TOUCH_LATCHED);
  154. ((PopupActivity)mContext).finish();
  155. }
  156. else if (nTargetID == ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SAVE) {
  157. // int nSoundTime = Sound().PlayMent(SND.setting.SETTING);
  158. // savePresetValue(nLivinglightPresetID, DimSeekBarValue, ColorSeekBarValue);
  159. // sendHandlerMsgDelayed(HANDLERMSG.FINISH_SCREEN, 0, 0, nSoundTime + 500);
  160. // QA 이관을 위한 임시코드...나중에는 원인분석을 해야 함
  161. Sound().Play(SND.setting.SETTING);
  162. savePresetValue(nLivinglightPresetID, DimSeekBarValue, ColorSeekBarValue);
  163. sendHandlerMsgDelayed(HANDLERMSG.FINISH_SCREEN, 0, 0, 3000 + 500);
  164. }
  165. else if (nTargetID == ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CANCEL) {
  166. Sound().Play(SND.effect.TOUCH_LATCHED);
  167. ((PopupActivity)mContext).finish();
  168. }
  169. }
  170. } catch (RuntimeException re) {
  171. LogUtil.errorLogInfo("", TAG, re);
  172. }
  173. catch (Exception e) {
  174. Log.e(TAG, "[Exception] onTouchEvent(View v, MotionEvent event)");
  175. //e.printStackTrace();
  176. LogUtil.errorLogInfo("", TAG, e);
  177. }
  178. }
  179. @Override
  180. protected int addBrActionFilter(String action) {
  181. return super.addBrActionFilter(action);
  182. }
  183. @Override
  184. protected void onBrReceive(Intent intent) {
  185. super.onBrReceive(intent);
  186. String strActionName = intent.getAction();
  187. Log.i(TAG, "[onBrReceive] strActionName = " + strActionName);
  188. if (strActionName.equals(BR_CTRL_LIGHT_LIVINGROOM)) {
  189. Log.i(TAG, "[onBrReceive] BR_LIGHT");
  190. updateDeviceStatus(false);
  191. updateDisplay();
  192. }
  193. else if (strActionName.equals(define.NOTIFY_DAIL)) {
  194. Log.i(TAG, "[onBrReceive] NOTIFY_DAIL");
  195. byte OnOff = intent.getByteExtra("ONOFF", (byte)0xEE);
  196. byte Dial = intent.getByteExtra("DIAL", (byte)0xEE);
  197. byte Level = intent.getByteExtra("LEVEL", (byte)0xEE);
  198. byte Color = intent.getByteExtra("COLOR", (byte)0xEE);
  199. Log.i(TAG, "[onBrReceive] OnOff [" + OnOff +"], Dial [" + Dial +"], Level [" + Level +"], Color [" + Color +"]");
  200. setFinishTimerReset();
  201. boolean LightOnOff = GetmData_LightOnOff();
  202. Log.i(TAG, "LightOnOff : " + LightOnOff);
  203. Log.i(TAG, "mEMData.ControlType : " + mEMData.ControlType);
  204. if (LightOnOff == false) {
  205. if (OnOff == 1) {
  206. // 켜짐이면
  207. if (Dial == 0) {
  208. // 조작 없음 이면
  209. //Sound().Play(SND.effect.TOUCH_LATCHED);
  210. if (mEMData.ControlType) {
  211. // 기존에 색온도 조절 중으로 밝기 조절로 변경
  212. mEMData.ControlType = false;
  213. }
  214. if ((DimSeekBarValue / 10) != (Level / 10)) SetDimSeekBarProgress(Level);
  215. if ((ColorSeekBarValue / 10) != (Color / 10)) SetColorSeekBarProgress(Color);
  216. }
  217. else if (Dial == 2) {
  218. // OFF 상태에서 조그버튼 길게 눌러 바로 색온도 조절 시
  219. OnOff = 1;
  220. }
  221. }
  222. }
  223. if (OnOff == 1) {
  224. // 켜짐이면
  225. if (mEMData.ControlType) {
  226. // 기존에 색온도 조절 중
  227. if (Dial == 1) {
  228. // 디밍 조절중
  229. mEMData.ControlType = false;
  230. }
  231. }
  232. else {
  233. // 기존에 밝기 조절 중
  234. if (Dial == 2) {
  235. // 색온도 조절 중
  236. mEMData.ControlType = true;
  237. }
  238. }
  239. if (Dial == 1) {
  240. // 디밍 조절중
  241. SetDimSeekBarProgress(Level);
  242. }
  243. else if (Dial == 2) {
  244. // 색온도 조절 중
  245. SetColorSeekBarProgress(Color);
  246. }
  247. }
  248. else {
  249. // 꺼짐
  250. if (Dial == 0) {
  251. super.finish();
  252. }
  253. }
  254. }
  255. }
  256. private void setPopupResult(String strValue) {
  257. try {
  258. Intent intent = new Intent();
  259. intent.putExtra(Common.BR_SENDER_SCREEN, ID.POPUPS.POPUP_CONFIGUREPRESET);
  260. intent.putExtra(Common.BR_RECEIVE_SCREEN, ID.SCREENS.SCREEN_MAIN);
  261. intent.putExtra(Common.BR_LIVINGLIGHT_PRESET_INFO, strValue);
  262. super.setPopupResult(intent);
  263. } catch (RuntimeException re) {
  264. LogUtil.errorLogInfo("", TAG, re);
  265. }
  266. catch (Exception e) {
  267. Log.e(TAG, "[Exception] setPopupResult()");
  268. //e.printStackTrace();
  269. LogUtil.errorLogInfo("", TAG, e);
  270. }
  271. }
  272. private POSITION getPosition(int nID) {
  273. // LOG("[GetPosition] nID = " + nID);
  274. POSITION position = new POSITION();
  275. position.setConfigurePresetPopupPosition(117, 30, 790, 540);
  276. try {
  277. switch (nID) {
  278. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACKGROUND:
  279. position.setConfigurePresetPopupPosition(117, 30, 790, 540);
  280. return position;
  281. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_DIM:
  282. position.setConfigurePresetPopupPosition(375, 115, 28, 300);
  283. return position;
  284. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_COLOR:
  285. position.setConfigurePresetPopupPosition(608, 115, 28, 300);
  286. return position;
  287. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CLOSE:
  288. position.setConfigurePresetPopupPosition(839, 43, 56, 56);
  289. return position;
  290. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SAVE:
  291. position.setConfigurePresetPopupPosition(212, 485, 290, 64);
  292. return position;
  293. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.CANCEL:
  294. position.setConfigurePresetPopupPosition(522, 485, 290, 64);
  295. return position;
  296. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.TITLE:
  297. position.setConfigurePresetPopupPosition(119, 32, 786, 89);
  298. return position;
  299. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_01:
  300. position.setConfigurePresetPopupPosition(339, 425, 100, 50);
  301. return position;
  302. case ID.POPUPS.CONFIGUREPRESET.ELEMENTS.TEXTS.SUBTITLE_02:
  303. position.setConfigurePresetPopupPosition(572, 425, 100, 50);
  304. return position;
  305. default:
  306. return position;
  307. }
  308. } catch (RuntimeException re) {
  309. LogUtil.errorLogInfo("", TAG, re);
  310. return position;
  311. }
  312. catch (Exception e) {
  313. Log.e(TAG, "[Exception] getPosition(int nID)");
  314. //e.printStackTrace();
  315. LogUtil.errorLogInfo("", TAG, e);
  316. return position;
  317. }
  318. }
  319. // =================================================================================================
  320. // [[ SeekBar 등록 ]] region
  321. // =================================================================================================
  322. private void registerSeekbar() {
  323. //SeekBar 배경 등록
  324. IMG_BACK_SEEKBAR_DIM = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_DIM).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_DIM).H, R.drawable.popup_light_dim_seekbar_back, R.drawable.popup_light_dim_seekbar_back, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_DIM);
  325. ViewRegistration(getLayout(), IMG_BACK_SEEKBAR_DIM, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_DIM).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_DIM).Y);
  326. IMG_BACK_SEEKBAR_COLOR = new WpadImageView(getContext(), TOUCH_KIND.BUTTON, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_COLOR).W, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_COLOR).H, R.drawable.popup_light_color_seekbar_back, R.drawable.popup_light_color_seekbar_back, ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_COLOR);
  327. ViewRegistration(getLayout(), IMG_BACK_SEEKBAR_COLOR, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_COLOR).X, getPosition(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.IMAGES.BACK_SEEKBAR_COLOR).Y);
  328. //SeekBar 등록
  329. SEEKBAR_CTRL_LIGHT_DIM = new SeekBar(getContext());
  330. SEEKBAR_CTRL_LIGHT_DIM.setId(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SEEKBAR_DIM);
  331. SEEKBAR_CTRL_LIGHT_COLOR = new SeekBar(getContext());
  332. SEEKBAR_CTRL_LIGHT_COLOR.setId(ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SEEKBAR_COLOR);
  333. Bitmap ThumbSizeDim = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.light_dim_thumb);
  334. ThumbSizeDim = Bitmap.createScaledBitmap(ThumbSizeDim, WpadScale.getWidth(ThumbSizeDim.getWidth()), WpadScale.getWidth(ThumbSizeDim.getHeight()), true);
  335. ImageView IMG_THUMB_DIM = new ImageView(getContext());
  336. IMG_THUMB_DIM.setImageBitmap(ThumbSizeDim);
  337. SEEKBAR_CTRL_LIGHT_DIM.setThumb(IMG_THUMB_DIM.getDrawable());
  338. Bitmap ThumbSizeColor = BitmapFactory.decodeResource(getContext().getResources(), R.drawable.light_color_thumb);
  339. ThumbSizeColor = Bitmap.createScaledBitmap(ThumbSizeColor, WpadScale.getWidth(ThumbSizeColor.getWidth()), WpadScale.getWidth(ThumbSizeColor.getHeight()), true);
  340. ImageView IMG_THUMB_COLOR = new ImageView(getContext());
  341. IMG_THUMB_COLOR.setImageBitmap(ThumbSizeColor);
  342. SEEKBAR_CTRL_LIGHT_COLOR.setThumb(IMG_THUMB_COLOR.getDrawable());
  343. Drawable mDrawable = getContext().getResources().getDrawable(R.drawable.transparent_background);
  344. SEEKBAR_CTRL_LIGHT_DIM.setProgressDrawable(mDrawable);
  345. SEEKBAR_CTRL_LIGHT_DIM.setProgress(0);
  346. // SEEKBAR_CTRL_LIGHT_DIM.setBackgroundColor(Color.RED);
  347. SEEKBAR_CTRL_LIGHT_COLOR.setProgressDrawable(mDrawable);
  348. SEEKBAR_CTRL_LIGHT_COLOR.setProgress(0);
  349. // SEEKBAR_CTRL_LIGHT_COLOR.setBackgroundColor(Color.RED);
  350. RelativeLayout.LayoutParams Params_Dim = new RelativeLayout.LayoutParams(WpadScale.getWidth(350 - WpadScale.getWidth(ThumbSizeDim.getWidth()) / 2), WpadScale.getHeight(80));
  351. SEEKBAR_CTRL_LIGHT_DIM.setLayoutParams(Params_Dim);
  352. SEEKBAR_CTRL_LIGHT_DIM.setPadding((WpadScale.getWidth(ThumbSizeDim.getWidth()) / 2), 0, WpadScale.getWidth(ThumbSizeDim.getHeight()) / 2, 0);
  353. SEEKBAR_CTRL_LIGHT_DIM.setMax((max - min) / step);
  354. RelativeLayout.LayoutParams Params_Color = new RelativeLayout.LayoutParams(WpadScale.getWidth(350 - WpadScale.getWidth(ThumbSizeColor.getWidth()) / 2), WpadScale.getHeight(80));
  355. SEEKBAR_CTRL_LIGHT_COLOR.setLayoutParams(Params_Color);
  356. SEEKBAR_CTRL_LIGHT_COLOR.setPadding((WpadScale.getWidth(ThumbSizeColor.getWidth()) / 2), 0, WpadScale.getWidth(ThumbSizeColor.getHeight()) / 2, 0);
  357. SEEKBAR_CTRL_LIGHT_COLOR.setMax((max - min) / step);
  358. SEEKBAR_CTRL_LIGHT_DIM.setRotation(270);
  359. SEEKBAR_CTRL_LIGHT_DIM.setOnSeekBarChangeListener(mOnDimSeekBarChangeListener);
  360. SEEKBAR_CTRL_LIGHT_COLOR.setRotation(270);
  361. SEEKBAR_CTRL_LIGHT_COLOR.setOnSeekBarChangeListener(mOnColorSeekBarChangeListener);
  362. SEEKBAR_CTRL_LIGHT_DIM.setTranslationX(110);
  363. SEEKBAR_CTRL_LIGHT_DIM.setTranslationY(195);
  364. SEEKBAR_CTRL_LIGHT_COLOR.setTranslationX(343);
  365. SEEKBAR_CTRL_LIGHT_COLOR.setTranslationY(195);
  366. getLayout().addView(SEEKBAR_CTRL_LIGHT_DIM);
  367. getLayout().addView(SEEKBAR_CTRL_LIGHT_COLOR);
  368. }
  369. /**
  370. * Seekbar 터치 시 동작 처리
  371. * **/
  372. SeekBar.OnSeekBarChangeListener mOnDimSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
  373. @Override
  374. public void onStopTrackingTouch(SeekBar seekBar) {
  375. try {
  376. if (seekBar.getId() == ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SEEKBAR_DIM) {
  377. Log.i(TAG, "[onStopTrackingTouch] DimSeekBarValue [" + DimSeekBarValue + "]");
  378. setFinishTimerReset();
  379. /**
  380. * 디밍, 색온도 제어 시작
  381. * **/
  382. com.artncore.commons.DataClasses.EnergyMeterV2.Device TempEM = new DataClasses.EnergyMeterV2.Device();
  383. if (mEMData.NewLivingEM.Data.LedLight == null) {
  384. Log.w(TAG, "[onStopTrackingTouch] mEMData.LivingEM.device.ledController == null");
  385. return;
  386. }
  387. TempEM.SetLedCount((byte) mEMData.NewLivingEM.Data.LedLight.length);
  388. for (int i = 0; i < mEMData.NewLivingEM.Data.LedLight.length; i++) {
  389. TempEM.ledController[i].device.Level = (byte) (DimSeekBarValue - (DimSeekBarValue % 10));
  390. Log.i(TAG, "[onStopTrackingTouch] TempEM.ledController[i].device.Level = " + TempEM.ledController[i].device.Level);
  391. }
  392. int ret = mSdb_LivingRoomLightAPI.SetLightDimming(define.DEVICE_ALL_OR_NOTHING, (byte) (DimSeekBarValue/10));
  393. if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
  394. else Sound().Play(SND.effect.TOUCH_UNLATCHED);
  395. /**
  396. * 디밍, 색온도 제어 끝
  397. * **/
  398. }
  399. } catch (RuntimeException re) {
  400. LogUtil.errorLogInfo("", TAG, re);
  401. }
  402. catch (Exception e) {
  403. Log.e(TAG, "[Exception] mOnSeekBarChangeListener.onStopTrackingTouch");
  404. //e.printStackTrace();
  405. LogUtil.errorLogInfo("", TAG, e);
  406. }
  407. }
  408. @Override
  409. public void onStartTrackingTouch(SeekBar seekBar) {
  410. }
  411. @Override
  412. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  413. if (seekBar.getId() == ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SEEKBAR_DIM) {
  414. DimSeekBarValue = min + (progress * step);
  415. }
  416. }
  417. };
  418. /**
  419. * Seekbar 터치 시 동작 처리
  420. * **/
  421. SeekBar.OnSeekBarChangeListener mOnColorSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
  422. @Override
  423. public void onStopTrackingTouch(SeekBar seekBar) {
  424. try {
  425. if (seekBar.getId() == ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SEEKBAR_COLOR) {
  426. Log.i(TAG, "[onStopTrackingTouch] ColorSeekBarValue [" + ColorSeekBarValue + "]");
  427. setFinishTimerReset();
  428. /**
  429. * 디밍, 색온도 제어 시작
  430. * **/
  431. com.artncore.commons.DataClasses.EnergyMeterV2.Device TempEM = new DataClasses.EnergyMeterV2.Device();
  432. if (mEMData.NewLivingEM.Data.LedLight == null) {
  433. Log.e(TAG, "[onStopTrackingTouch] mEMData.LivingEM.device.ledController == null");
  434. return;
  435. }
  436. TempEM.SetLedCount((byte) mEMData.NewLivingEM.Data.LedLight.length);
  437. for (int i = 0; i < mEMData.NewLivingEM.Data.LedLight.length; i++) {
  438. TempEM.ledController[i].device.Color = (byte) (ColorSeekBarValue - (ColorSeekBarValue % 10));
  439. Log.i(TAG, "[onStopTrackingTouch] TempEM.ledController[i].device.Color = " + TempEM.ledController[i].device.Color
  440. );
  441. }
  442. int ret = mSdb_LivingRoomLightAPI.SetLightColor(define.DEVICE_ALL_OR_NOTHING, (byte) (ColorSeekBarValue/10));
  443. if (ret >= 0) Sound().Play(SND.effect.TOUCH_LATCHED);
  444. else Sound().Play(SND.effect.TOUCH_UNLATCHED);
  445. /**
  446. * 디밍, 색온도 제어 끝
  447. * **/
  448. }
  449. } catch (RuntimeException re) {
  450. LogUtil.errorLogInfo("", TAG, re);
  451. }
  452. catch (Exception e) {
  453. Log.e(TAG, "[Exception] mOnSeekBarChangeListener.onStopTrackingTouch");
  454. //e.printStackTrace();
  455. LogUtil.errorLogInfo("", TAG, e);
  456. }
  457. }
  458. @Override
  459. public void onStartTrackingTouch(SeekBar seekBar) {
  460. }
  461. @Override
  462. public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
  463. if (seekBar.getId() == ID.POPUPS.CONFIGUREPRESET.ELEMENTS.BTNS.SEEKBAR_COLOR) {
  464. ColorSeekBarValue = min + (progress * step);
  465. }
  466. }
  467. };
  468. /**
  469. * 제어기기의 상태를 갱신한다.
  470. *
  471. * @param real - (boolean) true : 실시간 , false : 가장최근
  472. * @return (int) - >=0 : 성공, <0 : 실패
  473. */
  474. private int updateDeviceStatus(boolean real) {
  475. Log.i(TAG, "[updateDeviceStatus] - Start (real : " + real + ")");
  476. // 1. Api Load Check
  477. if (mSdb_LivingRoomLightAPI == null) {
  478. Log.e(TAG, "[updateDeviceStatus] mLivingRoomEnergyMeterV2API unload !!!");
  479. return -1;
  480. }
  481. // 2. Refresh
  482. try {
  483. int ret = mSdb_LivingRoomLightAPI.Refresh();
  484. if (ret < 0) {
  485. Log.e(TAG, "[updateDeviceStatus] Refresh(" + real + ") ret (" + ret + ") ErrorCode = " + mSdb_LivingRoomLightAPI.ErrorCode.ErrStr());
  486. return -2;
  487. }
  488. } catch (RuntimeException re) {
  489. LogUtil.errorLogInfo("", TAG, re);
  490. return -100;
  491. }
  492. catch (Exception e) {
  493. Log.e(TAG, "[updateDeviceStatus] - [Exception Error] lightApi.Refresh(" + real + ")");
  494. //e.printStackTrace();
  495. LogUtil.errorLogInfo("", TAG, e);
  496. return -100;
  497. }
  498. // 3. EMData Copy
  499. mEMData.NewLivingEM = mSdb_LivingRoomLightAPI.data;
  500. // 4. Debug Msg
  501. Log.i(TAG, "[updateDeviceStatus] - OK");
  502. return 0;
  503. }
  504. // =================================================================================================
  505. // [[ Draw ]] region
  506. // =================================================================================================
  507. /**
  508. * 변경되는 이미지를 다시 그린다.
  509. */
  510. private void updateDisplay() {
  511. if (mEMData == null) return;
  512. if (mEMData.NewLivingEM.Info.Install == false) return;
  513. if (mEMData.NewLivingEM.Info.LightGroup == null) return;
  514. if ((DimSeekBarValue / 10) != ((int) mEMData.NewLivingEM.Data.LedLight[0].Data.Dimming / 10)) {
  515. SetDimSeekBarProgress((int) mEMData.NewLivingEM.Data.LedLight[0].Data.Dimming);
  516. }
  517. if ((ColorSeekBarValue / 10) != ((int) mEMData.NewLivingEM.Data.LedLight[0].Data.Color / 10)) {
  518. SetColorSeekBarProgress((int) mEMData.NewLivingEM.Data.LedLight[0].Data.Color);
  519. }
  520. boolean tempLightStatus = false; //true면 간접등 또는 복도등 하나라도 켜짐
  521. for (int i = 1; i < mEMData.NewLivingEM.Data.LedLight.length; i++) {
  522. if (mEMData.NewLivingEM.Data.LedLight[i].Data.OnOff) {
  523. tempLightStatus = true;
  524. }
  525. }
  526. if (tempLightStatus) {
  527. if (mEMData.ControlType) {
  528. mEMData.ControlType = false;
  529. SetDimSeekBarProgress((int) mEMData.NewLivingEM.Data.LedLight[0].Data.Dimming);
  530. SetColorSeekBarProgress((int) mEMData.NewLivingEM.Data.LedLight[0].Data.Color);
  531. }
  532. }
  533. }
  534. /**
  535. * 조명 ON OFF 상태 반환
  536. * @return boolean true-하나라도 켜짐, false-모두 꺼짐
  537. * **/
  538. public boolean GetmData_LightOnOff() {
  539. boolean LightOnOff = false;
  540. if (mEMData.NewLivingEM.Data.LedLight == null) return false;
  541. for (int i = 0; i< mEMData.NewLivingEM.Data.LedLight.length; i++) {
  542. if (mEMData.NewLivingEM.Data.LedLight[i].Data.OnOff) {
  543. LightOnOff = true;
  544. }
  545. }
  546. return LightOnOff;
  547. }
  548. /**
  549. * SeekBar의 게이지를 설정할때 사용한다.
  550. * @param value 설정할 값
  551. * **/
  552. public void SetDimSeekBarProgress(int value) {
  553. Log.i(TAG, "[SetDimSeekBarProgress] value [" + value + "]");
  554. if (value - min < 0) {
  555. SEEKBAR_CTRL_LIGHT_DIM.setProgress(0);
  556. }
  557. else {
  558. SEEKBAR_CTRL_LIGHT_DIM.setProgress(value - min);
  559. }
  560. }
  561. public void SetColorSeekBarProgress(int value) {
  562. Log.i(TAG, "[SetColorSeekBarProgress] value [" + value + "]");
  563. if (value - min < 0) {
  564. SEEKBAR_CTRL_LIGHT_COLOR.setProgress(0);
  565. }
  566. else {
  567. SEEKBAR_CTRL_LIGHT_COLOR.setProgress(value - min);
  568. }
  569. }
  570. /**
  571. * 디바이스 API 를 Load 한다.
  572. *
  573. * @param mWallPadAPI - 생성시 전달받은 WallPadAPI
  574. * @return (int) - >=0 : 성공, <0 : 실패
  575. */
  576. private int loadDeviceAPI(WallPadAPI mWallPadAPI) {
  577. // 1. Mode Check
  578. Log.i(TAG, "[loadDeviceAPI] - Start");
  579. // 2. mWallPadAPI Check
  580. if (mWallPadAPI == null) {
  581. Log.e(TAG, "[loadDeviceAPI] - mWallPadAPI is null");
  582. return -2;
  583. }
  584. //////////////////////////////////////////////////////////////////////////////
  585. // Light
  586. //////////////////////////////////////////////////////////////////////////////
  587. // 3. Load API (Get_EnergyMeterV2Controller)
  588. Log.i(TAG, "[loadDeviceAPI] - Step1 : Light API Load...");
  589. try {
  590. mSdb_LivingRoomLightAPI = mWallPadAPI.Get_Sdb_LivingRoomLightAPI();
  591. } catch (RuntimeException re) {
  592. LogUtil.errorLogInfo("", TAG, re);
  593. return -100;
  594. }
  595. catch (Exception e) {
  596. Log.e(TAG, "[loadDeviceAPI] - [Exception Error] mWallPadAPI.Get_EnergyMeterV2Controller");
  597. Log.e(TAG, "[loadDeviceAPI] - " + e.toString());
  598. //e.printStackTrace();
  599. LogUtil.errorLogInfo("", TAG, e);
  600. return -100;
  601. }
  602. if (mSdb_LivingRoomLightAPI == null) {
  603. Log.e(TAG, "[loadDeviceAPI] - lightApi is null");
  604. return -4;
  605. }
  606. Log.i(TAG, "[loadDeviceAPI] - OK");
  607. return 0;
  608. }
  609. protected Handler EMDriverCheckHandler = new Handler() {
  610. @Override
  611. public void handleMessage(Message msg) {
  612. if (msg.what == 0) {
  613. if (loadDeviceAPI(mWallPadAPI) >= 0) {
  614. if (updateDeviceStatus(false) == 0) {
  615. EMDriverCheckHandler.sendEmptyMessageDelayed(1, 10);
  616. }
  617. else {
  618. EMDriverCheckHandler.sendEmptyMessageDelayed(0, 5000);
  619. }
  620. }
  621. else {
  622. Log.i(TAG, "EMDriverCheckHandler --> mAPI == null");
  623. EMDriverCheckHandler.sendEmptyMessageDelayed(0, 5000);
  624. }
  625. }
  626. else if (msg.what == 1) {
  627. Log.i(TAG, "EMDriverCheckHandler OK");
  628. if (mSdb_LivingRoomLightAPI != null) {
  629. registorBRName_LivingEM(true);
  630. updateDeviceStatus(false);
  631. registerBR(true);
  632. // // 조그버튼을 길게 눌러 색상 진입한 경우 BR 재 송신 처리
  633. // if(mintent != null)
  634. // {
  635. // byte OnOff = mintent.getByteExtra("ONOFF", (byte)0xEE);
  636. // byte Dial = mintent.getByteExtra("DIAL", (byte)0xEE);
  637. // byte Level = mintent.getByteExtra("LEVEL", (byte)0xEE);
  638. // byte Color = mintent.getByteExtra("COLOR", (byte)0xEE);
  639. //
  640. // if(Dial == (byte)0x02)
  641. // {
  642. // Intent Tempintent = new Intent();
  643. // Tempintent.setAction(define.NOTIFY_DAIL);
  644. // Tempintent.putExtra("ONOFF", OnOff);
  645. // Tempintent.putExtra("DIAL", Dial);
  646. // Tempintent.putExtra("LEVEL", Level);
  647. // Tempintent.putExtra("COLOR", Color);
  648. // getContext().sendBroadcast(Tempintent);
  649. // }
  650. // }
  651. updateDisplay();
  652. }
  653. }
  654. }
  655. };
  656. private boolean registorBRName_LivingEM(boolean bRegi) {
  657. try {
  658. Log.i(TAG, "[registorBRName_LivingEM] bRegi [" + bRegi + "]");
  659. if (mSdb_LivingRoomLightAPI == null) {
  660. Log.e(TAG, "[registorBRName_LivingEM] mLivingRoomEnergyMeterV2API is null!!");
  661. return false;
  662. }
  663. if (bRegi) mSdb_LivingRoomLightAPI.regChangedBR(BR_CTRL_LIGHT_LIVINGROOM);
  664. else mSdb_LivingRoomLightAPI.unregChangedBR(BR_CTRL_LIGHT_LIVINGROOM);
  665. return true;
  666. } catch (RuntimeException re) {
  667. LogUtil.errorLogInfo("", TAG, re);
  668. return false;
  669. }
  670. catch (Exception e) {
  671. Log.e(TAG, "[Exception] registorBRName_LivingEM(boolean bRegi)");
  672. //e.printStackTrace();
  673. LogUtil.errorLogInfo("", TAG, e);
  674. return false;
  675. }
  676. }
  677. /**
  678. * 디바이스에 알림 BR 을 등록한다. (거실 에너지미터)
  679. *
  680. * @return (int) - >=0 : 성공, <0 : 실패
  681. */
  682. private int registerBR(boolean OnOff) {
  683. Log.i(TAG, "[registerBR] - Start (OnOff:" + OnOff + ")");
  684. String BR_NAME = BR_CTRL_LIGHT_LIVINGROOM;
  685. // 1. Api Load Check
  686. if (mSdb_LivingRoomLightAPI == null) {
  687. Log.e(TAG, "[registerBR] - mLivingRoomEnergyMeterV2API unload !!!");
  688. return -1;
  689. }
  690. if (OnOff) {
  691. try {
  692. Log.i(TAG, "[registerBR] - regChangedBR START");
  693. mSdb_LivingRoomLightAPI.regChangedBR(BR_NAME);
  694. Log.i(TAG, "[registerBR] - regChangedBR END");
  695. } catch (RuntimeException re) {
  696. LogUtil.errorLogInfo("", TAG, re);
  697. return -101;
  698. }
  699. catch (Exception e) {
  700. Log.e(TAG, "[registerBR] - [Exception Error] mLivingRoomEnergyMeterV2API.regChangedBR");
  701. Log.e(TAG, "[registerBR] - " + e.toString());
  702. //e.printStackTrace();
  703. LogUtil.errorLogInfo("", TAG, e);
  704. return -101;
  705. }
  706. super.addBrActionFilter(BR_NAME);
  707. super.addBrActionFilter(define.NOTIFY_DAIL);
  708. }
  709. else {
  710. try {
  711. Log.i(TAG, "[registerBR] - unregChangedBR START");
  712. mSdb_LivingRoomLightAPI.unregChangedBR(BR_NAME);
  713. Log.i(TAG, "[registerBR] - unregChangedBR END");
  714. } catch (RuntimeException re) {
  715. LogUtil.errorLogInfo("", TAG, re);
  716. return -102;
  717. }
  718. catch (Exception e) {
  719. Log.e(TAG, "[registerBR] - [Exception Error] lightApi.unregChangedBR");
  720. Log.e(TAG, "[registerBR] - " + e.toString());
  721. //e.printStackTrace();
  722. LogUtil.errorLogInfo("", TAG, e);
  723. return -102;
  724. }
  725. super.removeBrActionFilter(BR_NAME);
  726. super.removeBrActionFilter(define.NOTIFY_DAIL);
  727. }
  728. return 0;
  729. }
  730. private void syncPresetValue(int nPresetID) {
  731. try {
  732. WallpadStatusData mWallpadStatusData = new WallpadStatusData(mContext);
  733. String strPresetValue = mWallpadStatusData.getLivinglightModeCtrlUnitValues(nLivinglightPresetID, 0);
  734. mWallpadStatusData.closeDB();
  735. Log.i(TAG, "[syncPresetValue] nPresetID [" + nPresetID + "], strPresetValue [" + strPresetValue + "]");
  736. String[] strParse = strPresetValue.split(":");
  737. EMData mTempEMData = new EMData();
  738. if (mEMData.NewLivingEM.Data.LedLight == null) {
  739. Log.e(TAG, "[syncPresetValue] mEMData.NewLivingEM.Data.LedLight == null");
  740. return;
  741. }
  742. mTempEMData.NewLivingEM.Data.setLedLight((byte) mEMData.NewLivingEM.Data.LedLight.length);
  743. for (int i = 0; i < mEMData.NewLivingEM.Data.LedLight.length; i++) {
  744. if (i == 0) {
  745. mTempEMData.NewLivingEM.Data.LedLight[i].Data.OnOff = (DataClasses.LedController.POWER.On == 1) ? true : false;
  746. mTempEMData.NewLivingEM.Data.LedLight[i].Data.Dimming = (byte) (MainActivity.mLightInfo.mPreset[nPresetID].mLights[0].DIM);
  747. mTempEMData.NewLivingEM.Data.LedLight[i].Data.Color = (byte) (MainActivity.mLightInfo.mPreset[nPresetID].mLights[0].COLOR);
  748. }
  749. else {
  750. mTempEMData.NewLivingEM.Data.LedLight[i].Data.OnOff = false;
  751. }
  752. }
  753. // 프리셋이 미설정 상태인 경우, 밝기 100(10)/색온도10(1)로 설정한다.
  754. if (mTempEMData.NewLivingEM.Data.LedLight[0].Data.Dimming == 0) mTempEMData.NewLivingEM.Data.LedLight[0].Data.Dimming = 10;
  755. if (mTempEMData.NewLivingEM.Data.LedLight[0].Data.Color == 0) mTempEMData.NewLivingEM.Data.LedLight[0].Data.Color = 1;
  756. for (int i = 0; i < mEMData.NewLivingEM.Data.LedLight.length; i++) {
  757. Log.d(TAG,"[syncPresetValue] Index [" + i + "], OnOff [" + mTempEMData.NewLivingEM.Data.LedLight[i].Data.OnOff + "], Level [" + mTempEMData.NewLivingEM.Data.LedLight[i].Data.Dimming + "], Color [" + mTempEMData.NewLivingEM.Data.LedLight[i].Data.Color + "]");
  758. }
  759. DimSeekBarValue = mTempEMData.NewLivingEM.Data.LedLight[0].Data.Dimming * 10;
  760. ColorSeekBarValue = mTempEMData.NewLivingEM.Data.LedLight[0].Data.Color * 10;
  761. Log.i(TAG, "[syncPresetValue] DimSeekBarValue [" + DimSeekBarValue + "], ColorSeekBarValue [" + ColorSeekBarValue + "]");
  762. SetDimSeekBarProgress(DimSeekBarValue);
  763. SetColorSeekBarProgress(ColorSeekBarValue);
  764. // int nResult = mSdb_LivingRoomLightAPI.SetLight(define.DEVICE_ALL_OR_NOTHING, true, (byte) (DimSeekBarValue / 10), (byte) (ColorSeekBarValue / 10));
  765. if(mSdb_LivingRoomLightAPI!=null)
  766. {
  767. int nResult = mSdb_LivingRoomLightAPI.SetLight((byte) 0, true, (byte) (DimSeekBarValue / 10), (byte) (ColorSeekBarValue / 10));
  768. Log.d(TAG,"[syncPresetValue] nResult [" + nResult + "]");
  769. // int nResultOnOff = mSdb_LivingRoomLightAPI.SetLightOnOff(define.DEVICE_ALL_OR_NOTHING, true);
  770. // int nResultDim = mSdb_LivingRoomLightAPI.SetLightDimming(define.DEVICE_ALL_OR_NOTHING, (byte) DimSeekBarValue);
  771. // int nResultColor = mSdb_LivingRoomLightAPI.SetLightColor(define.DEVICE_ALL_OR_NOTHING, (byte) ColorSeekBarValue);
  772. // Log.d(TAG,"[syncPresetValue] nResultOnOff [" + nResultOnOff + "], nResultDim [" + nResultDim + "], nResultColor [" + nResultColor + "]");
  773. }
  774. } catch (RuntimeException re) {
  775. LogUtil.errorLogInfo("", TAG, re);
  776. }
  777. catch (Exception e) {
  778. Log.e(TAG, "[Exception] syncPresetValue(int nPresetID)");
  779. //e.printStackTrace();
  780. LogUtil.errorLogInfo("", TAG, e);
  781. }
  782. }
  783. private void savePresetValue(int nPresetID, int nDim, int nColor) {
  784. try {
  785. Log.i(TAG, "[savePresetValue] nPresetID [" + nPresetID + "], nDim [" + nDim + "], nColor [" + nColor + "]");
  786. strPresetInfo = Integer.toString(nPresetID) + "/on:" + Integer.toString(nDim / 10) + ":" + Integer.toString(nColor / 10);
  787. setPopupResult(strPresetInfo);
  788. } catch (RuntimeException re) {
  789. LogUtil.errorLogInfo("", TAG, re);
  790. }
  791. catch (Exception e) {
  792. Log.e(TAG, "[Exception] savePresetValue(int nPresetID, int nDim, int nColor)");
  793. //e.printStackTrace();
  794. LogUtil.errorLogInfo("", TAG, e);
  795. }
  796. }
  797. // MainActivity Handler
  798. public final class HANDLERMSG {
  799. public final static int FINISH_SCREEN = 999;
  800. }
  801. public Handler MainHandler = new Handler(Looper.getMainLooper()) {
  802. public void handleMessage(Message msg) {
  803. Log.d(TAG, "[MainHandler] MainHandler : what [" + msg.what + "], arg1 [" + msg.arg1 + "], arg2 [" + msg.arg2 + "]");
  804. switch (msg.what) {
  805. case HANDLERMSG.FINISH_SCREEN:
  806. ((PopupActivity)mContext).finish();
  807. break;
  808. default:
  809. Log.d(TAG, "MainHandler : " + msg.what);
  810. break;
  811. }
  812. }
  813. };
  814. public void sendHandlerMsg(int what, int arg1, int arg2) {
  815. try {
  816. Log.i(TAG, "[sendHandlerMsg] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "]");
  817. Message HandleMsg = MainHandler.obtainMessage();
  818. HandleMsg.what = what;
  819. HandleMsg.arg1 = arg1;
  820. HandleMsg.arg2 = arg2;
  821. MainHandler.sendMessage(HandleMsg);
  822. } catch (RuntimeException re) {
  823. LogUtil.errorLogInfo("", TAG, re);
  824. }
  825. catch (Exception e) {
  826. Log.e(TAG, "[Exception] sendHandlerMsg(msg)");
  827. //e.printStackTrace();
  828. LogUtil.errorLogInfo("", TAG, e);
  829. }
  830. }
  831. public void sendHandlerMsgDelayed(int what, int arg1, int arg2, long delay) {
  832. try {
  833. Log.i(TAG, "[sendHandlerMsgDelayed] what [" + what + "], arg1 [" + arg1 + "], arg2 [" + arg2 + "], delay [" + delay + "]");
  834. Message HandleMsg = MainHandler.obtainMessage();
  835. HandleMsg.what = what;
  836. HandleMsg.arg1 = arg1;
  837. HandleMsg.arg2 = arg2;
  838. MainHandler.sendMessageDelayed(HandleMsg, delay);
  839. } catch (RuntimeException re) {
  840. LogUtil.errorLogInfo("", TAG, re);
  841. }
  842. catch (Exception e) {
  843. Log.e(TAG, "[Exception] sendHandlerMsgDelayed(msg)");
  844. //e.printStackTrace();
  845. LogUtil.errorLogInfo("", TAG, e);
  846. }
  847. }
  848. }