aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java')
-rw-r--r--app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java174
1 files changed, 174 insertions, 0 deletions
diff --git a/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java b/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java
new file mode 100644
index 0000000..a9f010a
--- /dev/null
+++ b/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java
@@ -0,0 +1,174 @@
+package fil.libre.repwifiapp.activities;
+
+
+import fil.libre.repwifiapp.Commons;
+import fil.libre.repwifiapp.R;
+import fil.libre.repwifiapp.helpers.AccessPointInfo;
+import fil.libre.repwifiapp.helpers.ConnectionStatus;
+import fil.libre.repwifiapp.helpers.Utils;
+
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.view.Menu;
+import android.widget.TextView;
+import android.app.Activity;
+import android.content.Intent;
+
+public class LongTaskActivity extends Activity {
+
+
+ private class Task extends AsyncTask<Object, Object, Object>{
+
+ private int REQ_CODE;
+
+ public Task(int reqCode, Object input){
+ this.REQ_CODE = reqCode;
+ }
+
+ @Override
+ protected Object doInBackground(Object... params) {
+
+ Object ret = null;
+
+ switch (this.REQ_CODE){
+
+ case Commons.RequestCode.CONNECT:
+
+ ret = Commons.connectionEngine.connect((AccessPointInfo)params[0]);
+ break;
+
+ case Commons.RequestCode.NETWORKS_GET:
+
+ ret = Commons.connectionEngine.getAvailableNetworks();
+ break;
+
+ case Commons.RequestCode.STATUS_GET:
+
+ ret = Commons.connectionEngine.getConnectionStatus();
+ break;
+
+ default:
+
+ break;
+
+ }
+
+ return ret;
+
+ }
+
+ protected void onPostExecute(Object result) {
+ taskCompleted(result, this.REQ_CODE);
+ }
+
+ }
+
+ private AccessPointInfo currentNetwork = null;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState){
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_long_task);
+
+ startTask();
+
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu){
+ return true;
+ }
+
+ private void startTask() {
+
+ //retrieve the request code:
+ Intent intent = getIntent();
+ if (! intent.hasExtra(Commons.EXTRA_REQCODE)){
+ this.setResult(RESULT_CANCELED);
+ finish();
+ }
+
+ Object input = null;
+ int reqCode = intent.getExtras().getInt(Commons.EXTRA_REQCODE);
+
+ switch (reqCode) {
+
+ case Commons.RequestCode.CONNECT:
+ setTitle("Connecting...");
+ setMessage("Connecting...");
+ //Extract AccessPointInfo
+ input = intent.getExtras().getSerializable(Commons.EXTRA_APINFO);
+ currentNetwork = (AccessPointInfo)input;
+ break;
+
+ case Commons.RequestCode.NETWORKS_GET:
+ setTitle("Scanning...");
+ setMessage("Scanning for Networks...");
+
+ case Commons.RequestCode.STATUS_GET:
+ setTitle("Checking status...");
+ setMessage("Checking status...");
+
+ default:
+ setTitle("Please wait...");
+ setMessage("Please wait...");
+ break;
+ }
+
+ Task task = new Task(reqCode, input);
+ task.execute(input);
+
+ }
+
+ private void taskCompleted(Object result, int reqCode){
+
+ Utils.logDebug("Finished long task reqCode: "+ reqCode,1);
+
+ //Return to caller:
+ Intent intent = this.getIntent();
+
+
+ switch (reqCode){
+
+ case Commons.RequestCode.CONNECT:
+
+ intent.putExtra(Commons.EXTRA_BOOLEAN, (Boolean)result);
+ intent.putExtra(Commons.EXTRA_APINFO, this.currentNetwork);
+ break;
+
+ case Commons.RequestCode.NETWORKS_GET:
+
+ intent.putExtra(Commons.EXTRA_APINFO_ARR, (AccessPointInfo[])result);
+ break;
+
+ case Commons.RequestCode.STATUS_GET:
+
+ intent.putExtra(Commons.EXTRA_CONSTATUS, (ConnectionStatus)result);
+ break;
+
+ default:
+
+ Utils.logDebug("Task terminating in null: ",1);
+ break;
+
+ }
+
+ this.setResult(RESULT_OK, intent);
+ finish();
+
+ }
+
+
+ private void setMessage(String msg) {
+ TextView txt = (TextView)findViewById(R.id.txt_msg);
+ txt.setText(msg);
+ }
+
+ @Override
+ public void onBackPressed() {
+ //suppress
+ }
+
+
+
+}