Checking in LEDE GUI for device registration; this was ported from the implementation...
[iot2.git] / others / lede-gui / src / main / java / com / example / lede2 / ListActivity.java
diff --git a/others/lede-gui/src/main/java/com/example/lede2/ListActivity.java b/others/lede-gui/src/main/java/com/example/lede2/ListActivity.java
new file mode 100644 (file)
index 0000000..60bc1f8
--- /dev/null
@@ -0,0 +1,87 @@
+package com.example.lede2;\r
+\r
+import android.support.v7.app.AppCompatActivity;\r
+import android.os.Bundle;\r
+import android.util.Log;\r
+import android.util.SparseBooleanArray;\r
+import android.view.View;\r
+import android.widget.ArrayAdapter;\r
+import android.widget.Button;\r
+import android.widget.ListView;\r
+\r
+import java.util.List;\r
+\r
+public class ListActivity extends AppCompatActivity implements View.OnClickListener {\r
+\r
+    Button delete;//delete button in UI\r
+    Button selectAll;//select button in UI\r
+    ListView listview;//listview in UI\r
+    SSH ssh;//Connection object between Android & Router\r
+    List<String> tmp;//data structure which has IoT device information already registered on LEDE2\r
+    ArrayAdapter adapter;//adapter between tmp and listview\r
+\r
+    @Override\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.activity_list);\r
+\r
+        ssh = new SSH();\r
+        try {\r
+            tmp = ssh.execute("-ln").get();\r
+            Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread\r
+        } catch (Exception e) {\r
+        }\r
+\r
+        delete = (Button) findViewById(R.id.delete);\r
+        selectAll = (Button) findViewById(R.id.selectAll);\r
+        listview = (ListView) findViewById(R.id.listView1);\r
+\r
+        adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_multiple_choice, tmp);//register tmp array to adapter\r
+\r
+        delete.setOnClickListener(this);\r
+        selectAll.setOnClickListener(this);\r
+        listview.setAdapter(adapter);\r
+    }\r
+\r
+    @Override\r
+    public void onClick(View v) {\r
+        if (v == delete) {\r
+            //SparseBooleanArray's data is Ture or False\r
+            SparseBooleanArray checkedItems = listview.getCheckedItemPositions();//to check which devices are checked in listview(check -> true, no check -> false)\r
+            int count = adapter.getCount();//number of items in listview\r
+            String command = "-dn "; //after, +'name '\r
+\r
+            for (int i = count - 1; i >= 0; i--) {//scan from back\r
+                //i : index of IoT device which will be removed in tmp array\r
+                if (checkedItems.get(i)) {//if check\r
+                    String rmName = tmp.get(i).toString();//save the name of checked IoT device\r
+                    command += rmName + " ";//complete command\r
+                    //remove this information on the listview\r
+                    tmp.remove(i);\r
+                }\r
+            }\r
+            try {\r
+                //delete IoT device information in the router by sending command line to router\r
+                ssh = new SSH();\r
+                ssh.execute(command);\r
+                Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread\r
+            } catch (Exception e) {\r
+                Log.d("SLEEP EXCEPTION", "SLEEP EXCEPTION occurs in onClick method of ListActivity");\r
+            }\r
+\r
+            //update\r
+            adapter.notifyDataSetChanged();\r
+\r
+            //delete checked mark in listview\r
+            listview.clearChoices();\r
+\r
+        } else if (v == selectAll) {\r
+            int count;\r
+            count = adapter.getCount();\r
+\r
+            for (int i = 0; i < count; i++) {\r
+                listview.setItemChecked(i, true);\r
+            }\r
+        }\r
+    }\r
+}\r