diff options
Diffstat (limited to 'app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java')
-rw-r--r-- | app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java | 174 |
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 + } + + + +} |