diff options
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java | 161 |
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; + } } } } |