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.java217
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);
}
}