summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java161
1 files changed, 45 insertions, 116 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java b/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java
index d0868437..1025a64e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java
+++ b/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java
@@ -21,21 +21,14 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
-import android.view.Display;
import android.view.Menu;
import android.view.MenuItem;
-import android.view.View;
-import android.view.WindowManager;
import android.widget.ListView;
-import android.widget.ProgressBar;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
import com.pedrogomez.renderers.Renderer;
@@ -53,12 +46,9 @@ import butterknife.OnItemClick;
import se.leap.bitmaskclient.fragments.AboutFragment;
import static android.view.View.GONE;
-import static android.view.View.INVISIBLE;
-import static android.view.View.VISIBLE;
import static se.leap.bitmaskclient.Constants.APP_ACTION_QUIT;
import static se.leap.bitmaskclient.Constants.PROVIDER_ALLOW_ANONYMOUS;
import static se.leap.bitmaskclient.Constants.PROVIDER_KEY;
-import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
import static se.leap.bitmaskclient.ProviderAPI.CORRECTLY_DOWNLOADED_CERTIFICATE;
import static se.leap.bitmaskclient.ProviderAPI.ERRORS;
import static se.leap.bitmaskclient.ProviderAPI.INCORRECTLY_DOWNLOADED_CERTIFICATE;
@@ -68,7 +58,6 @@ import static se.leap.bitmaskclient.ProviderAPI.PROVIDER_OK;
import static se.leap.bitmaskclient.ProviderAPI.PROVIDER_SET_UP;
import static se.leap.bitmaskclient.ProviderAPI.RESULT_CODE;
import static se.leap.bitmaskclient.ProviderAPI.RESULT_KEY;
-import static se.leap.bitmaskclient.ProviderAPI.UPDATE_PROGRESSBAR;
/**
* abstract base Activity that builds and shows the list of known available providers.
@@ -81,12 +70,8 @@ import static se.leap.bitmaskclient.ProviderAPI.UPDATE_PROGRESSBAR;
* @author cyberta
*/
-public abstract class BaseConfigurationWizard extends ButterKnifeActivity
+public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
implements NewProviderDialog.NewProviderDialogInterface, DownloadFailedDialog.DownloadFailedDialogInterface, ProviderAPIResultReceiver.Receiver {
- @InjectView(R.id.progressbar_configuration_wizard)
- protected ProgressBar mProgressBar;
- @InjectView(R.id.progressbar_description)
- protected TextView progressbarDescription;
@InjectView(R.id.provider_list)
protected ListView providerListView;
@@ -95,10 +80,11 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
private ProviderManager providerManager;
protected Intent mConfigState = new Intent(PROVIDER_NOT_SET);
- protected Provider selectedProvider;
final public static String TAG = ConfigurationWizard.class.getSimpleName();
+ final private static String ACTIVITY_STATE = "ACTIVITY STATE";
+
final protected static String PROVIDER_NOT_SET = "PROVIDER NOT SET";
final protected static String SETTING_UP_PROVIDER = "PROVIDER GETS SET";
final private static String SHOWING_PROVIDER_DETAILS = "SHOWING PROVIDER DETAILS";
@@ -106,16 +92,10 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
final private static String REASON_TO_FAIL = "REASON TO FAIL";
final protected static String SERVICES_RETRIEVED = "SERVICES RETRIEVED";
- final private static String PROGRESSBAR_TEXT = TAG + "PROGRESSBAR_TEXT";
- final private static String PROGRESSBAR_NUMBER = TAG + "PROGRESSBAR_NUMBER";
- final private static String ACTIVITY_STATE = "ACTIVITY STATE";
-
public ProviderAPIResultReceiver providerAPIResultReceiver;
private ProviderAPIBroadcastReceiver providerAPIBroadcastReceiver;
- protected static SharedPreferences preferences;
FragmentManagerEnhanced fragmentManager;
- //TODO: add some states (values for progressbarText) about ongoing setup or remove that field
private boolean isActivityShowing;
private String reasonToFail;
@@ -135,12 +115,10 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
@Override
protected void onSaveInstanceState(@NotNull Bundle outState) {
- if (mProgressBar != null)
- outState.putInt(PROGRESSBAR_NUMBER, mProgressBar.getProgress());
- if (progressbarDescription != null)
- outState.putString(PROGRESSBAR_TEXT, progressbarDescription.getText().toString());
+ //if (progressbarDescription != null)
+ // outState.putString(PROGRESSBAR_TEXT, progressbarDescription.getText().toString());
outState.putString(ACTIVITY_STATE, mConfigState.getAction());
- outState.putParcelable(Provider.KEY, selectedProvider);
+ outState.putParcelable(Provider.KEY, provider);
DialogFragment dialogFragment = (DialogFragment) fragmentManager.findFragmentByTag(DownloadFailedDialog.TAG);
if (dialogFragment != null) {
@@ -154,7 +132,6 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- preferences = getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
fragmentManager = new FragmentManagerEnhanced(getSupportFragmentManager());
providerManager = ProviderManager.getInstance(getAssets(), getExternalFilesDir(null));
@@ -169,7 +146,7 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
private void restoreState(Bundle savedInstanceState) {
- selectedProvider = savedInstanceState.getParcelable(Provider.KEY);
+ provider = savedInstanceState.getParcelable(Provider.KEY);
mConfigState.setAction(savedInstanceState.getString(ACTIVITY_STATE, PROVIDER_NOT_SET));
reasonToFail = savedInstanceState.getString(REASON_TO_FAIL);
@@ -180,7 +157,7 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
if (SETTING_UP_PROVIDER.equals(mConfigState.getAction()) ||
PENDING_SHOW_FAILED_DIALOG.equals(mConfigState.getAction())
) {
- onItemSelectedUi();
+ showProgressBar();
}
}
@@ -192,7 +169,7 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
isActivityShowing = true;
if (SETTING_UP_PROVIDER.equals(mConfigState.getAction())) {
showProgressBar();
- adapter.hideAllBut(adapter.indexOf(selectedProvider));
+ adapter.hideAllBut(adapter.indexOf(provider));
checkProviderSetUp();
} else if (PENDING_SHOW_FAILED_DIALOG.equals(mConfigState.getAction())) {
showDownloadFailedDialog();
@@ -203,22 +180,10 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
private void setUpInitialUI() {
setContentView(R.layout.configuration_wizard_activity);
+ setProviderHeaderText(R.string.setup_provider);
hideProgressBar();
}
- private void hideProgressBar() {
- //needs to be "INVISIBLE" instead of GONE b/c the progressbarDescription gets translated
- // by the height of mProgressbar (and the height of the first list item)
- mProgressBar.setVisibility(INVISIBLE);
- progressbarDescription.setVisibility(INVISIBLE);
- mProgressBar.setProgress(0);
- }
-
- protected void showProgressBar() {
- mProgressBar.setVisibility(VISIBLE);
- progressbarDescription.setVisibility(VISIBLE);
- }
-
@Override
protected void onPause() {
super.onPause();
@@ -237,8 +202,7 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
providerAPIResultReceiver = new ProviderAPIResultReceiver(new Handler(), this);
providerAPIBroadcastReceiver = new ProviderAPIBroadcastReceiver();
- IntentFilter updateIntentFilter = new IntentFilter(UPDATE_PROGRESSBAR);
- updateIntentFilter.addAction(PROVIDER_API_EVENT);
+ IntentFilter updateIntentFilter = new IntentFilter(PROVIDER_API_EVENT);
updateIntentFilter.addCategory(Intent.CATEGORY_DEFAULT);
registerReceiver(providerAPIBroadcastReceiver, updateIntentFilter);
}
@@ -247,9 +211,9 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
try {
String providerJsonString = preferences.getString(Provider.KEY, "");
if (!providerJsonString.isEmpty())
- selectedProvider.define(new JSONObject(providerJsonString));
+ provider.define(new JSONObject(providerJsonString));
String caCert = preferences.getString(Provider.CA_CERT, "");
- selectedProvider.setCACert(caCert);
+ provider.setCACert(caCert);
} catch (JSONException e) {
e.printStackTrace();
}
@@ -259,9 +223,6 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
downloadVpnCertificate();
} else {
- mProgressBar.incrementProgressBy(1);
- hideProgressBar();
-
showProviderDetails();
}
}
@@ -277,8 +238,6 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
}
void handleCorrectlyDownloadedCertificate() {
- mProgressBar.incrementProgressBy(1);
- hideProgressBar();
showProviderDetails();
}
@@ -307,16 +266,11 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
//TODO Code 2 pane view
mConfigState.setAction(SETTING_UP_PROVIDER);
- selectedProvider = adapter.getItem(position);
- onItemSelectedUi();
+ provider = adapter.getItem(position);
+ showProgressBar();
onItemSelectedLogic();
}
- protected void onItemSelectedUi() {
- adapter.hideAllBut(adapter.indexOf(selectedProvider));
- startProgressBar();
- }
-
@Override
public void onBackPressed() {
if (SETTING_UP_PROVIDER.equals(mConfigState.getAction()) ||
@@ -330,9 +284,7 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
private void stopSettingUpProvider() {
ProviderAPI.stop();
- mProgressBar.setVisibility(GONE);
- mProgressBar.setProgress(0);
- progressbarDescription.setVisibility(GONE);
+ loadingScreen.setVisibility(GONE);
cancelSettingUpProvider();
}
@@ -352,7 +304,7 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
providerAPICommand.setAction(ProviderAPI.UPDATE_PROVIDER_DETAILS);
Bundle parameters = new Bundle();
- parameters.putString(Provider.MAIN_URL, selectedProvider.getMainUrl().toString());
+ parameters.putString(Provider.MAIN_URL, provider.getMainUrl().toString());
providerAPICommand.putExtra(ProviderAPI.PARAMETERS, parameters);
startService(providerAPICommand);
@@ -371,34 +323,6 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
setResult(RESULT_CANCELED, askQuit);
}
- private void startProgressBar() {
- showProgressBar();
- mProgressBar.setProgress(0);
- mProgressBar.setMax(3);
-
- int measured_height = listItemHeight();
- mProgressBar.setTranslationY(measured_height);
- progressbarDescription.setTranslationY(measured_height + mProgressBar.getHeight());
- }
-
- private int listItemHeight() {
- View listItem = adapter.getView(0, null, providerListView);
- listItem.setLayoutParams(new RelativeLayout.LayoutParams(
- RelativeLayout.LayoutParams.WRAP_CONTENT,
- RelativeLayout.LayoutParams.WRAP_CONTENT));
- WindowManager wm = (WindowManager) getApplicationContext()
- .getSystemService(Context.WINDOW_SERVICE);
- Display display = wm.getDefaultDisplay();
- int screenWidth = display.getWidth(); // deprecated
-
- int listViewWidth = screenWidth - 10 - 10;
- int widthSpec = View.MeasureSpec.makeMeasureSpec(listViewWidth,
- View.MeasureSpec.AT_MOST);
- listItem.measure(widthSpec, 0);
-
- return listItem.getMeasuredHeight();
- }
-
/**
* Asks ProviderApiService to download an anonymous (anon) VPN certificate.
*/
@@ -461,10 +385,12 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
*/
public void showProviderDetails() {
// show only if current activity is shown
- if (isActivityShowing && !mConfigState.getAction().equalsIgnoreCase(SHOWING_PROVIDER_DETAILS)) {
+ if (isActivityShowing && mConfigState.getAction() != null &&
+ !mConfigState.getAction().equalsIgnoreCase(SHOWING_PROVIDER_DETAILS)) {
mConfigState.setAction(SHOWING_PROVIDER_DETAILS);
Intent intent = new Intent(this, ProviderDetailActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
+ intent.putExtra(PROVIDER_KEY, provider);
startActivity(intent);
}
}
@@ -491,39 +417,42 @@ public abstract class BaseConfigurationWizard extends ButterKnifeActivity
public void cancelAndShowAllProviders() {
mConfigState.setAction(PROVIDER_NOT_SET);
- selectedProvider = null;
+ provider = null;
adapter.showAllProviders();
}
public class ProviderAPIBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
+ Log.d(TAG, "received Broadcast");
- if (action == null) {
+ String action = intent.getAction();
+ if (action == null || !action.equalsIgnoreCase(PROVIDER_API_EVENT)) {
return;
}
- if (action.equalsIgnoreCase(UPDATE_PROGRESSBAR)) {
- int update = intent.getIntExtra(ProviderAPI.CURRENT_PROGRESS, 0);
- mProgressBar.setProgress(update);
- } else if (action.equalsIgnoreCase(PROVIDER_API_EVENT)) {
+ if (mConfigState.getAction() != null &&
+ mConfigState.getAction().equalsIgnoreCase(SETTING_UP_PROVIDER)) {
int resultCode = intent.getIntExtra(RESULT_CODE, -1);
-
- switch (resultCode) {
- case PROVIDER_OK:
- handleProviderSetUp();
- break;
- case PROVIDER_NOK:
- handleProviderSetupFailed((Bundle) intent.getParcelableExtra(RESULT_KEY));
- break;
- case CORRECTLY_DOWNLOADED_CERTIFICATE:
- handleCorrectlyDownloadedCertificate();
- break;
- case INCORRECTLY_DOWNLOADED_CERTIFICATE:
- handleIncorrectlyDownloadedCertificate();
- break;
-
+ Log.d(TAG, "Broadcast resultCode: " + Integer.toString(resultCode));
+
+
+ if (getProviderName().equalsIgnoreCase(provider.getName()) &&
+ getProviderDomain().equalsIgnoreCase(provider.getDomain())) {
+ switch (resultCode) {
+ case PROVIDER_OK:
+ handleProviderSetUp();
+ break;
+ case PROVIDER_NOK:
+ handleProviderSetupFailed((Bundle) intent.getParcelableExtra(RESULT_KEY));
+ break;
+ case CORRECTLY_DOWNLOADED_CERTIFICATE:
+ handleCorrectlyDownloadedCertificate();
+ break;
+ case INCORRECTLY_DOWNLOADED_CERTIFICATE:
+ handleIncorrectlyDownloadedCertificate();
+ break;
+ }
}
}
}