[iot-gateway/lighting-gateway.git] / client / AndroidClients / LightingController / src / com / lightingcontroller / bindSelect.java
1 /**************************************************************************************************
2 Filename: sceneSelect.java
3 Revised: $$
4 Revision: $$
6 Description: ZLL UI
8 Copyright (C) {2012} Texas Instruments Incorporated - http://www.ti.com/
11 Redistribution and use in source and binary forms, with or without
12 modification, are permitted provided that the following conditions
13 are met:
15 Redistributions of source code must retain the above copyright
16 notice, this list of conditions and the following disclaimer.
18 Redistributions in binary form must reproduce the above copyright
19 notice, this list of conditions and the following disclaimer in the
20 documentation and/or other materials provided with the
21 distribution.
23 Neither the name of Texas Instruments Incorporated nor the names of
24 its contributors may be used to endorse or promote products derived
25 from this software without specific prior written permission.
27 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
30 A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
31 OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
32 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
33 LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
34 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
35 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39 **************************************************************************************************/
41 package com.lightingcontroller;
43 import java.util.ArrayList;
44 import java.util.List;
46 import com.lightingcontroller.R;
47 import com.lightingcontroller.Zigbee.ZigbeeAssistant;
48 import com.lightingcontroller.Zigbee.ZigbeeDevice;
50 import android.app.Activity;
51 import android.app.AlertDialog;
52 import android.app.ProgressDialog;
53 import android.content.DialogInterface;
54 import android.os.Bundle;
55 import android.view.View;
56 import android.widget.AdapterView;
57 import android.widget.ArrayAdapter;
58 import android.widget.RadioButton;
59 import android.widget.Spinner;
60 import android.widget.AdapterView.OnItemSelectedListener;
61 import android.widget.ToggleButton;
63 public class bindSelect extends Activity {
65 private static ZigbeeDevice currControllingDevice;
66 private Spinner controllingDeviceSpinner;
67 private ArrayAdapter<String> controllingDeviceSpinnerAdapter;
69 private static ZigbeeDevice currControlledDevice;
70 private Spinner controlledDeviceSpinner;
71 private ArrayAdapter<String> controlledDeviceSpinnerAdapter;
73 ProgressDialog bar;
75 @Override
76 public void onCreate(Bundle savedInstanceState) {
77 super.onCreate(savedInstanceState);
78 this.overridePendingTransition(R.anim.animation_enter_l, R.anim.animation_leave_r);
80 setContentView(R.layout.bindview);
82 List<ZigbeeDevice> controllingDevList = ZigbeeAssistant.getSwitchers();
83 List<String> controllingDevNameList = new ArrayList<String>();
84 for (int i = 0 ; i < controllingDevList.size() ; i++)
85 {
86 controllingDevNameList.add(controllingDevList.get(i).Name);
87 }
88 controllingDeviceSpinner = (Spinner) findViewById(R.id.controllingDeviceSpinner);
89 controllingDeviceSpinnerAdapter = new ArrayAdapter<String>(this,
90 android.R.layout.simple_spinner_item, controllingDevNameList);
91 controllingDeviceSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
92 controllingDeviceSpinner.setAdapter(controllingDeviceSpinnerAdapter);
94 addItemsOnControllingDeviceSpinner();
95 addListenerOnControllingDeviceSpinnerItemSelection();
97 List<ZigbeeDevice> controlledDevList = ZigbeeAssistant.getSwitchable();
98 List<String> controlledDevNameList = new ArrayList<String>();
99 for (int i = 0 ; i < controlledDevList.size() ; i++)
100 {
101 controlledDevNameList.add(controlledDevList.get(i).Name);
102 }
103 controlledDeviceSpinner = (Spinner) findViewById(R.id.controlledDeviceSpinner);
104 controlledDeviceSpinnerAdapter = new ArrayAdapter<String>(this,
105 android.R.layout.simple_spinner_item, controlledDevNameList);
106 controlledDeviceSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
107 controlledDeviceSpinner.setAdapter(controlledDeviceSpinnerAdapter);
109 addItemsOnControlledDeviceSpinner();
110 addListenerOnControlledDeviceSpinnerItemSelection();
111 }
113 // add items into spinner dynamically
114 public void addItemsOnControllingDeviceSpinner() {
115 //add devices
116 List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchers();
117 controllingDeviceSpinnerAdapter.clear();
118 for (int i = 0 ; i < devList.size() ; i++)
119 {
120 controllingDeviceSpinnerAdapter.add(devList.get(i).Name);
121 }
122 }
124 public void addListenerOnControllingDeviceSpinnerItemSelection() {
125 controllingDeviceSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
126 @Override
127 public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
128 List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchers();
129 currControllingDevice = devList.get(position);
130 }
132 @Override
133 public void onNothingSelected(AdapterView<?> arg0) {
134 }
135 });
136 }
138 // add items into spinner dynamically
139 public void addItemsOnControlledDeviceSpinner() {
140 //add devices
141 List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchable();
142 controlledDeviceSpinnerAdapter.clear();
143 for (int i = 0 ; i < devList.size() ; i++)
144 {
145 controlledDeviceSpinnerAdapter.add(devList.get(i).Name);
146 }
147 }
149 public void addListenerOnControlledDeviceSpinnerItemSelection() {
150 controlledDeviceSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
151 @Override
152 public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
153 List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchable();
154 currControlledDevice = devList.get(position);
155 }
157 @Override
158 public void onNothingSelected(AdapterView<?> arg0) {
159 }
160 });
161 }
163 public void IdControllingButton(View view) {
164 ToggleButton idDeviceButton = (ToggleButton) findViewById(R.id.IdControllingToggle);
165 if ( (idDeviceButton.isChecked()) && (currControllingDevice != null))
166 {
167 ZigbeeAssistant.IdentifyDevice(currControllingDevice, (short) 0x80);
168 }
169 else if(currControllingDevice != null)
170 {
171 ZigbeeAssistant.IdentifyDevice(currControllingDevice, (short) 0);
172 }
173 }
175 public void IdControlledButton(View view) {
176 ToggleButton idDeviceButton = (ToggleButton) findViewById(R.id.IdControlledToggle);
177 if ( (idDeviceButton.isChecked()) && (currControlledDevice != null))
178 {
179 ZigbeeAssistant.IdentifyDevice(currControlledDevice, (short) 0x80);
180 }
181 else if(currControlledDevice != null)
182 {
183 ZigbeeAssistant.IdentifyDevice(currControlledDevice, (short) 0);
184 }
185 }
187 public void bindButton(View view) {
189 //de-select button
190 RadioButton bindRadio = (RadioButton) findViewById(R.id.bindRadio);
191 bindRadio.setChecked(false);
193 if((currControllingDevice != null) && (currControlledDevice != null))
194 {
195 AlertDialog show = new AlertDialog.Builder(bindSelect.this)
196 .setTitle("Bind devices")
197 .setMessage("Bind " + currControllingDevice.Name + " to " + currControlledDevice.Name)
198 .setPositiveButton("OK",
199 new DialogInterface.OnClickListener()
200 {
201 public void onClick(DialogInterface dialoginterface,int i){
202 //only support on/off for now but can expand to others by adding a spinner
203 //to select cluster and populate controlling and controlled spinners accordingly
204 ZigbeeAssistant.bindDevices(currControllingDevice, currControlledDevice, 0x0006);
205 }
206 })
207 .setNegativeButton("Cancel", null)
208 .show();
209 }
210 else
211 {
212 AlertDialog show = new AlertDialog.Builder(bindSelect.this)
213 .setTitle("Bind devices")
214 .setMessage("Select controlling and controlled")
215 .setPositiveButton("OK",
216 new DialogInterface.OnClickListener()
217 {
218 public void onClick(DialogInterface dialoginterface,int i){
219 }
220 })
221 .show();
222 }
224 }
226 }