The final version for lede-gui (the phone app for device registration)
[iot2.git] / others / lede-gui / src / main / java / com / example / lede2 / DriversSelectActivity.java
diff --git a/others/lede-gui/src/main/java/com/example/lede2/DriversSelectActivity.java b/others/lede-gui/src/main/java/com/example/lede2/DriversSelectActivity.java
new file mode 100644 (file)
index 0000000..90c091f
--- /dev/null
@@ -0,0 +1,149 @@
+package com.example.lede2;\r
+\r
+import android.app.ProgressDialog;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.support.design.widget.Snackbar;\r
+import android.support.v7.app.AppCompatActivity;\r
+import android.util.Log;\r
+import android.view.View;\r
+import android.view.inputmethod.InputMethodManager;\r
+import android.widget.AdapterView;\r
+import android.widget.ArrayAdapter;\r
+import android.widget.Button;\r
+import android.widget.Spinner;\r
+\r
+import java.io.File;\r
+import java.io.FileInputStream;\r
+import java.io.IOException;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.Properties;\r
+\r
+/**\r
+ * Created by Brian on 2/16/2018.\r
+ */\r
+\r
+public class DriversSelectActivity extends AppCompatActivity implements View.OnClickListener, View.OnFocusChangeListener {\r
+    Spinner typeSpinner;\r
+    Button doneButton;\r
+    Properties prop;\r
+    ProgressDialog dialog;\r
+\r
+\r
+    protected void onCreate(Bundle savedInstanceState) {\r
+        super.onCreate(savedInstanceState);\r
+        setContentView(R.layout.drivers);\r
+        SSH_MySQL getListOfDrivers = new SSH_MySQL();\r
+        typeSpinner = (Spinner) findViewById(R.id.spinnerDrivers);\r
+        doneButton = (Button) findViewById(R.id.doneDrivers);\r
+        String getListOfDriversCommand  = this.getString(R.string.getListOfDriversCommand);\r
+        List<String> results = new ArrayList<>();\r
+        String driversListFilename = this.getString(R.string.driversListFilename);\r
+\r
+        //get list of all driver types\r
+        try {\r
+            getListOfDrivers.execute(getListOfDriversCommand);\r
+            Thread.sleep(1000);//To execute asyntask in ssh object, we have to sleep main thread\r
+            results = getListOfDrivers.getResultLines();\r
+            while(results.size() == 0){\r
+                Thread.sleep(500);\r
+                results = getListOfDrivers.getResultLines();\r
+            }\r
+            System.out.println(results);\r
+        } catch (Exception e) {\r
+            Log.d("Sleep exception", "exception at getSetsAndRelations");\r
+        }\r
+\r
+        addSSHResultsToConfig(results, driversListFilename);\r
+        System.out.println("read from file: " + ConfigFileIO.readFromFile(driversListFilename, this));\r
+        prop = new Properties();\r
+        File file = new File(getApplicationContext().getFilesDir(), driversListFilename);\r
+        FileInputStream fis = null;\r
+        try{\r
+            fis = new FileInputStream(file);\r
+            prop.load(fis);\r
+            fis.close();\r
+        }\r
+        catch (IOException ex){\r
+            System.out.println("Error when reading drivers list file ");\r
+            ex.printStackTrace();\r
+        }\r
+\r
+        ArrayList driverTypeList = new ArrayList();\r
+        //add sets relations to the relation hashmap\r
+        int numFields  = Integer.parseInt(prop.getProperty("FIELD_NUMBER"));\r
+        for(int i = 0; i < numFields; i++){\r
+            driverTypeList.add(prop.getProperty("FIELD_" + i));\r
+        }\r
+        ArrayAdapter typeAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, driverTypeList);\r
+        typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);\r
+        typeSpinner.setAdapter(typeAdapter);\r
+\r
+\r
+        typeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {\r
+            @Override\r
+            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {\r
+            }\r
+\r
+            @Override\r
+            public void onNothingSelected(AdapterView<?> adapterView) {\r
+\r
+            }\r
+        });\r
+        doneButton.setOnClickListener(this);\r
+\r
+    }\r
+\r
+    @Override\r
+    public void onClick(View view) {\r
+        if (view == doneButton) {\r
+            dialog = new ProgressDialog(this);\r
+            dialog.setMessage("Please Wait");\r
+            dialog.setCancelable(false);\r
+            dialog.setInverseBackgroundForced(false);\r
+            dialog.show();\r
+\r
+            Log.d("CLICKING", "Clicking on done button!");\r
+            //determine the where to cat based on user selection and go to next screen\r
+            //looks at config file for the command based on the user selection\r
+            String userSelection = typeSpinner.getSelectedItem().toString();\r
+            String fromProperty = prop.getProperty(userSelection);\r
+            String command2 = prop.getProperty("COMMAND_PREFIX") + fromProperty;\r
+                Intent i = new Intent(this, DriversAddActivity.class);\r
+                i.putExtra("getConfigCommand", command2);\r
+                startActivity(i);\r
+                finish();\r
+        }\r
+\r
+    }\r
+    @Override\r
+    protected void onStop() {\r
+        super.onStop();\r
+        if(dialog != null && dialog.isShowing()){\r
+            dialog.dismiss();\r
+        }\r
+    }\r
+\r
+\r
+\r
+    public void onFocusChange(View view, boolean hasFocus) {\r
+        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);\r
+        if (hasFocus) {\r
+            imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);\r
+        } else {\r
+            imm.hideSoftInputFromWindow(view.getWindowToken(), 0);\r
+        }\r
+    }\r
+\r
+    protected void addSSHResultsToConfig(List<String> results, String filename) {\r
+        ConfigFileIO.writeToNewFile(filename,"", this );\r
+        File dir = getFilesDir();\r
+        File file = new File(dir, filename);\r
+        file.delete();\r
+        for (int i = 0; i < results.size(); i++) {\r
+            ConfigFileIO.writeToFile(filename, results.get(i), this);\r
+        }\r
+    }\r
+}
\ No newline at end of file