diff options
Diffstat (limited to 'app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java')
-rw-r--r-- | app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java | 217 |
1 files changed, 138 insertions, 79 deletions
diff --git a/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java b/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java index a5292d2..940d547 100644 --- a/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java +++ b/app/src/fil/libre/repwifiapp/activities/LongTaskActivity.java @@ -1,5 +1,5 @@ // -// Copyright 2017 Filippo "Fil" Bergamo <fil.bergamo@riseup.net> +// Copyright 2017, 2018 Filippo "Fil" Bergamo <fil.bergamo@riseup.net> // // This file is part of RepWifiApp. // @@ -18,83 +18,47 @@ // // ******************************************************************** - package fil.libre.repwifiapp.activities; -import fil.libre.repwifiapp.ActivityLauncher; -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.app.AlertDialog; +import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.ProgressBar; 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 ActivityLauncher.RequestCode.CONNECT: - - ret = Commons.connectionEngine.connect((AccessPointInfo) params[0]); - break; - - case ActivityLauncher.RequestCode.NETWORKS_GET: - - ret = Commons.connectionEngine.getAvailableNetworks(); - break; - - case ActivityLauncher.RequestCode.STATUS_GET: - - ret = Commons.connectionEngine.getConnectionStatus(); - break; - - default: - - break; - - } - - return ret; - - } - - @Override - protected void onPostExecute(Object result) { - taskCompleted(result, this.REQ_CODE); - } +import android.widget.Toast; +import fil.libre.repwifiapp.ActivityLauncher; +import fil.libre.repwifiapp.ActivityLauncher.RequestCode; +import fil.libre.repwifiapp.Prefs; +import fil.libre.repwifiapp.R; +import fil.libre.repwifiapp.helpers.Logger; +import fil.libre.repwifiapp.network.AccessPointInfo; +import fil.libre.repwifiapp.network.ConnectionResult; - } +public class LongTaskActivity extends ConnectionBoundActivity { private AccessPointInfo currentNetwork = null; + // private Task currentTask = null; + + private int currentReqCode = -1; + private boolean isCancelled = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_long_task); - - toggleProgbar(Commons.isProgbarEnabled()); - startTask(); - + toggleProgbar(isProgbarEnabled()); + + } + + @Override + public void onStart(){ + super.onStart(); + if (isServiceBound()){ + startTask(); + } } @Override @@ -102,6 +66,21 @@ public class LongTaskActivity extends Activity { return true; } + @Override + protected void onManagementServiceConnected() { + startTask(); + } + + @Override + protected void onMsgConnectionResult(ConnectionResult connres) { + taskCompleted(connres, currentReqCode); + } + + @Override + protected void onMsgAvailableNetworks(AccessPointInfo[] infos) { + taskCompleted(infos, currentReqCode); + } + private void startTask() { // retrieve the request code: @@ -112,40 +91,56 @@ public class LongTaskActivity extends Activity { } Object input = null; - int reqCode = intent.getExtras().getInt(ActivityLauncher.EXTRA_REQCODE); - - switch (reqCode) { + currentReqCode = intent.getExtras().getInt(ActivityLauncher.EXTRA_REQCODE); + + switch (currentReqCode) { case ActivityLauncher.RequestCode.CONNECT: // Extract AccessPointInfo - input = intent.getExtras().getSerializable(ActivityLauncher.EXTRA_APINFO); + input = intent.getExtras().getParcelable(ActivityLauncher.EXTRA_APINFO); currentNetwork = (AccessPointInfo) input; setTitle(getString(R.string.msg_connecting_to) + " " + currentNetwork.getSsid() + "..."); - setMessage(getString(R.string.msg_connecting_to) + " " + currentNetwork.getSsid() + "..."); + setMessage(getString(R.string.msg_connecting_to) + " " + currentNetwork.getSsid() + + "..."); + + sendCmdStartConnect(currentNetwork); + break; case ActivityLauncher.RequestCode.NETWORKS_GET: setTitle(getString(R.string.title_scanning)); setMessage(getString(R.string.msg_scanning_for_nets)); - - case ActivityLauncher.RequestCode.STATUS_GET: + + sendCmdGetAvailableNetworks(); + + break; + +/* case ActivityLauncher.RequestCode.STATUS_GET: setTitle(getString(R.string.msg_checking_status)); setMessage(getString(R.string.msg_checking_status)); - + break;*/ + default: setTitle(getString(R.string.msg_please_wait)); setMessage(getString(R.string.msg_please_wait)); break; } - Task task = new Task(reqCode, input); - task.execute(input); + +/* currentTask = new Task(reqCode, input); + currentTask.execute(input);*/ } private void taskCompleted(Object result, int reqCode) { - Utils.logDebug("Finished long task reqCode: " + reqCode, 1); + Logger.logDebug("Finished long task reqCode: " + reqCode); + + if (isCancelled){ + Logger.logDebug("Received result but activity has been canceled"); + this.setResult(RESULT_CANCELED); + finish(); + } // Return to caller: Intent intent = this.getIntent(); @@ -154,7 +149,7 @@ public class LongTaskActivity extends Activity { case ActivityLauncher.RequestCode.CONNECT: - intent.putExtra(ActivityLauncher.EXTRA_BOOLEAN, (Boolean) result); + intent.putExtra(ActivityLauncher.EXTRA_CONNRES, (ConnectionResult)result); intent.putExtra(ActivityLauncher.EXTRA_APINFO, this.currentNetwork); break; @@ -162,15 +157,15 @@ public class LongTaskActivity extends Activity { intent.putExtra(ActivityLauncher.EXTRA_APINFO_ARR, (AccessPointInfo[]) result); break; - +/* case ActivityLauncher.RequestCode.STATUS_GET: intent.putExtra(ActivityLauncher.EXTRA_CONSTATUS, (ConnectionStatus) result); - break; + break;*/ default: - Utils.logDebug("Task terminating in null: ", 1); + Logger.logDebug("Task terminating in null: ", 1); break; } @@ -199,7 +194,71 @@ public class LongTaskActivity extends Activity { @Override public void onBackPressed() { - // suppress back button + promtpCancelJob(); + } + + private void promtpCancelJob() { + + String msg = getString(R.string.msg_confirm_stop_job); + AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this, + R.style.Theme_RepWifiDialogTheme); + dlgAlert.setMessage(msg); + dlgAlert.setPositiveButton(getString(android.R.string.ok), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int whichButton) { + confirmCancelJob(); + return; + } + }); + dlgAlert.setNegativeButton(getString(android.R.string.cancel), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int whichButton) { + return; + } + }); + + dlgAlert.setCancelable(false); + AlertDialog diag = dlgAlert.create(); + + diag.show(); + + } + + private boolean cancelConnection() { + return sendCmdAbortConnection(); + } + + private void confirmCancelJob() { + /* + * if (currentTask != null){ + * if (currentReqCode == RequestCode.CONNECT){ + * Commons.connectionEngine.abortConnection(); + * } + * + * currentTask.cancel(true); + * } + */ + + if (currentReqCode == RequestCode.CONNECT) { + if (cancelConnection()){ + + super.onBackPressed(); + } else { + Toast.makeText(getApplicationContext(), getString(R.string.msg_error_generic), Toast.LENGTH_LONG).show(); + } + + } else { + isCancelled = true; + super.onBackPressed(); + } + + + } + + private boolean isProgbarEnabled() { + return Prefs.getBoolean(getApplicationContext(), Prefs.PREF_PROGBAR, true); } } |