From 6c79290b1783a303fad5ea8be3c3583cc79dad84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Thu, 4 Dec 2014 00:46:25 +0100 Subject: Learning to use Butterknife, refactoring small things. --- .../se/leap/bitmaskclient/ConfigurationWizard.java | 140 +++++++++------------ 1 file changed, 62 insertions(+), 78 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 7c79c7c7..65cab91e 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2013 LEAP Encryption Access Project and contributers + * Copyright (c) 2013 LEAP Encryption Access Project and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -23,9 +23,13 @@ import android.view.*; import android.widget.*; import java.io.*; import java.net.*; -import java.util.*; + +import butterknife.ButterKnife; +import butterknife.InjectView; +import org.jetbrains.annotations.NotNull; import org.json.*; +import butterknife.OnItemSelected; import se.leap.bitmaskclient.DownloadFailedDialog.DownloadFailedDialogInterface; import se.leap.bitmaskclient.NewProviderDialog.NewProviderDialogInterface; import se.leap.bitmaskclient.ProviderAPIResultReceiver.Receiver; @@ -41,11 +45,14 @@ import se.leap.bitmaskclient.eip.Constants; * @author parmegv * */ -public class ConfigurationWizard extends Activity +public class ConfigurationWizard extends ListActivity implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderDetailFragmentInterface, DownloadFailedDialogInterface, Receiver { - private ProgressBar mProgressBar; - private TextView progressbar_description; + @InjectView(R.id.progressbar_configuration_wizard) + ProgressBar mProgressBar; + @InjectView(R.id.progressbar_description) + TextView progressbar_description; + private ProviderListFragment provider_list_fragment; private Intent mConfigState = new Intent(); private ProviderItem selected_provider; @@ -73,7 +80,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD private int progress = -1; @Override - protected void onSaveInstanceState(Bundle outState) { + protected void onSaveInstanceState(@NotNull Bundle outState) { if(mProgressBar != null) outState.putInt(PROGRESSBAR_NUMBER, mProgressBar.getProgress()); if(progressbar_description != null) @@ -89,6 +96,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD super.onCreate(savedInstanceState); preferences = getSharedPreferences(Dashboard.SHARED_PREFERENCES, MODE_PRIVATE); fragment_manager = new FragmentManagerEnhanced(getFragmentManager()); + ButterKnife.inject(this); setUpInitialUI(); @@ -99,15 +107,19 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD setUpProviderList(); if(savedInstanceState != null) { - progressbar_text = savedInstanceState.getString(PROGRESSBAR_TEXT, ""); - provider_name = savedInstanceState.getString(Provider.NAME, ""); - selected_provider = getProvider(provider_name); - progress = savedInstanceState.getInt(PROGRESSBAR_NUMBER, -1); - providerAPI_result_receiver = savedInstanceState.getParcelable(ProviderAPI.RECEIVER_KEY); - providerAPI_result_receiver.setReceiver(this); + restoreState(savedInstanceState); } } + private void restoreState(Bundle savedInstanceState) { + progressbar_text = savedInstanceState.getString(PROGRESSBAR_TEXT, ""); + provider_name = savedInstanceState.getString(Provider.NAME, ""); + selected_provider = getProvider(provider_name); + progress = savedInstanceState.getInt(PROGRESSBAR_NUMBER, -1); + providerAPI_result_receiver = savedInstanceState.getParcelable(ProviderAPI.RECEIVER_KEY); + providerAPI_result_receiver.setReceiver(this); + } + @Override protected void onPostResume() { super.onPostResume(); @@ -128,10 +140,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } private void hideProgressBar() { - mProgressBar = (ProgressBar) findViewById(R.id.progressbar_configuration_wizard); mProgressBar.setVisibility(ProgressBar.INVISIBLE); - - progressbar_description = (TextView) findViewById(R.id.progressbar_description); progressbar_description.setVisibility(TextView.INVISIBLE); } @@ -145,11 +154,6 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD provider_list_fragment.setArguments(arguments); - putProviderListFragment(provider_list_fragment); - } - - private void putProviderListFragment(ProviderListFragment fragment) { - fragment_manager.replace(R.id.configuration_wizard_layout, provider_list_fragment, ProviderListFragment.TAG); } @Override @@ -194,7 +198,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD setResult(RESULT_CANCELED, mConfigState); String reason_to_fail = resultData.getString(ProviderAPI.ERRORS); - showDownloadFailedDialog(getCurrentFocus(), reason_to_fail); + showDownloadFailedDialog(reason_to_fail); } else if(resultCode == ProviderAPI.CORRECTLY_DOWNLOADED_CERTIFICATE) { mProgressBar.incrementProgressBy(1); @@ -256,21 +260,14 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } private void usualBackButton() { - try { - boolean is_provider_set_up = new JSONObject(preferences.getString(Provider.KEY, "no provider")) != null ? true : false; - boolean is_provider_set_up_truly = new JSONObject(preferences.getString(Provider.KEY, "no provider")).length() != 0 ? true : false; - if(!is_provider_set_up || !is_provider_set_up_truly) { - askDashboardToQuitApp(); - } else { - setResult(RESULT_OK); - } - } catch (JSONException e) { - askDashboardToQuitApp(); - super.onBackPressed(); - e.printStackTrace(); - } - super.onBackPressed(); + if(preferences.getString(Provider.KEY, "").isEmpty()) { + askDashboardToQuitApp(); + } else { + setResult(RESULT_OK); + } + super.onBackPressed(); } + private void askDashboardToQuitApp() { Intent ask_quit = new Intent(); ask_quit.putExtra(Dashboard.ACTION_QUIT, Dashboard.ACTION_QUIT); @@ -278,13 +275,11 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } private ProviderItem getProvider(String name) { - Iterator providers_iterator = ProviderListContent.ITEMS.iterator(); - while(providers_iterator.hasNext()) { - ProviderItem provider = providers_iterator.next(); - if(provider.name().equalsIgnoreCase(name)) { - return provider; - } - } + for (ProviderItem provider : ProviderListContent.ITEMS) { + if (provider.name().equalsIgnoreCase(name)) { + return provider; + } + } return null; } @@ -301,13 +296,11 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD private int getProviderIndex(String id) { int index = 0; - Iterator providers_iterator = ProviderListContent.ITEMS.iterator(); - while(providers_iterator.hasNext()) { - ProviderItem provider = providers_iterator.next(); - if(provider.name().equalsIgnoreCase(id)) { - break; - } else index++; - } + for (ProviderItem provider : ProviderListContent.ITEMS) { + if (provider.name().equalsIgnoreCase(id)) { + break; + } else index++; + } return index; } @@ -358,15 +351,16 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } } - private String extractProviderMainUrlFromAssetsFile(String filepath) { + private String extractProviderMainUrlFromAssetsFile(String file_path) { String provider_main_url = ""; try { - InputStream input_stream_file_contents = getAssets().open(filepath); + InputStream input_stream_file_contents = getAssets().open(file_path); byte[] urls_file_bytes = new byte[input_stream_file_contents.available()]; - input_stream_file_contents.read(urls_file_bytes); - String urls_file_content = new String(urls_file_bytes); - JSONObject file_contents = new JSONObject(urls_file_content); - provider_main_url = file_contents.getString(Provider.MAIN_URL); + if(input_stream_file_contents.read(urls_file_bytes) > 0) { + String urls_file_content = new String(urls_file_bytes); + JSONObject file_contents = new JSONObject(urls_file_content); + provider_main_url = file_contents.getString(Provider.MAIN_URL); + } } catch (JSONException e) { } catch (IOException e) { } @@ -376,14 +370,12 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD private String getId(String provider_main_url) { try { URL provider_url = new URL(provider_main_url); - Iterator providers_iterator = ProviderListContent.ITEMS.iterator(); - while(providers_iterator.hasNext()) { - ProviderItem provider = providers_iterator.next(); - URL aux_provider_url = new URL(provider.providerMainUrl()); - if(isSameURL(provider_url, aux_provider_url)) { - return provider.name(); - } - } + for (ProviderItem provider : ProviderListContent.ITEMS) { + URL aux_provider_url = new URL(provider.providerMainUrl()); + if (isSameURL(provider_url, aux_provider_url)) { + return provider.name(); + } + } } catch (MalformedURLException e) { e.printStackTrace(); } @@ -399,16 +391,9 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD * same protocol, false otherwise. */ private boolean isSameURL(final URL url, final URL baseUrl) { - if (!url.getProtocol().equals(baseUrl.getProtocol())) { - return false; - } - if (!url.getHost().equals(baseUrl.getHost())) { - return false; - } - if (url.getPort() != baseUrl.getPort()) { - return false; - } - return true; + return url.getProtocol().equals(baseUrl.getProtocol()) && + url.getHost().equals(baseUrl.getHost()) && + url.getPort() == baseUrl.getPort(); } /** @@ -455,10 +440,9 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD * Once selected a provider, this fragment offers the user to log in, * use it anonymously (if possible) * or cancel his/her election pressing the back button. - * @param view - * @param reason_to_fail + * @param reason_to_fail */ - public void showDownloadFailedDialog(View view, String reason_to_fail) { + public void showDownloadFailedDialog(String reason_to_fail) { FragmentTransaction fragment_transaction = fragment_manager.removePreviousFragment(DownloadFailedDialog.TAG); DialogFragment newFragment = DownloadFailedDialog.newInstance(reason_to_fail); @@ -492,7 +476,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } private void autoSelectProvider(String provider_main_url, boolean danger_on) { - preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).commit(); + preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).apply(); onItemSelected(getId(provider_main_url)); } @@ -559,7 +543,7 @@ n * @param provider_main_url if(provider_list_fragment != null && preferences.contains(ProviderItem.DANGER_ON)) { provider_list_fragment.removeLastItem(); } - preferences.edit().remove(Provider.KEY).remove(ProviderItem.DANGER_ON).remove(Constants.ALLOWED_ANON).remove(Constants.KEY).commit(); + preferences.edit().remove(Provider.KEY).remove(ProviderItem.DANGER_ON).remove(Constants.ALLOWED_ANON).remove(Constants.KEY).apply(); } @Override -- cgit v1.2.3 From 568e5b77e7e34e10e5585614f5587df29f45cfd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Thu, 4 Dec 2014 01:14:03 +0100 Subject: CW loads, but no provider list appears. --- app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 65cab91e..55bb43a2 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -45,7 +45,7 @@ import se.leap.bitmaskclient.eip.Constants; * @author parmegv * */ -public class ConfigurationWizard extends ListActivity +public class ConfigurationWizard extends Activity implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderDetailFragmentInterface, DownloadFailedDialogInterface, Receiver { @InjectView(R.id.progressbar_configuration_wizard) @@ -96,7 +96,6 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD super.onCreate(savedInstanceState); preferences = getSharedPreferences(Dashboard.SHARED_PREFERENCES, MODE_PRIVATE); fragment_manager = new FragmentManagerEnhanced(getFragmentManager()); - ButterKnife.inject(this); setUpInitialUI(); @@ -136,7 +135,9 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD private void setUpInitialUI() { setContentView(R.layout.configuration_wizard_activity); - hideProgressBar(); + ButterKnife.inject(this); + + hideProgressBar(); } private void hideProgressBar() { -- cgit v1.2.3 From f9a200a7004b74cb2d64e37129e6234427c84c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Thu, 4 Dec 2014 16:38:21 +0100 Subject: Renderers and dagger, refactoring CW. --- .../se/leap/bitmaskclient/ConfigurationWizard.java | 103 +++++++-------------- 1 file changed, 36 insertions(+), 67 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 55bb43a2..f178b754 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -21,15 +21,21 @@ import android.content.*; import android.os.*; import android.view.*; import android.widget.*; + +import com.pedrogomez.renderers.Renderer; +import com.pedrogomez.renderers.RendererAdapter; + import java.io.*; import java.net.*; +import java.util.*; import butterknife.ButterKnife; import butterknife.InjectView; import org.jetbrains.annotations.NotNull; import org.json.*; -import butterknife.OnItemSelected; +import javax.inject.Inject; + import se.leap.bitmaskclient.DownloadFailedDialog.DownloadFailedDialogInterface; import se.leap.bitmaskclient.NewProviderDialog.NewProviderDialogInterface; import se.leap.bitmaskclient.ProviderAPIResultReceiver.Receiver; @@ -48,11 +54,13 @@ import se.leap.bitmaskclient.eip.Constants; public class ConfigurationWizard extends Activity implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderDetailFragmentInterface, DownloadFailedDialogInterface, Receiver { - @InjectView(R.id.progressbar_configuration_wizard) - ProgressBar mProgressBar; - @InjectView(R.id.progressbar_description) - TextView progressbar_description; + @InjectView(R.id.progressbar_configuration_wizard) ProgressBar mProgressBar; + @InjectView(R.id.progressbar_description) TextView progressbar_description; + + @InjectView(R.id.provider_list) ListView provider_list_view; + @Inject RendererAdapter adapter; + private ProviderManager provider_manager; private ProviderListFragment provider_list_fragment; private Intent mConfigState = new Intent(); private ProviderItem selected_provider; @@ -64,7 +72,6 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD final protected static String PROVIDER_SET = "PROVIDER SET"; final protected static String SERVICES_RETRIEVED = "SERVICES RETRIEVED"; - final protected static String ASSETS_URL_FOLDER = "urls"; final private static String PROGRESSBAR_TEXT = TAG + "PROGRESSBAR_TEXT"; final private static String PROGRESSBAR_NUMBER = TAG + "PROGRESSBAR_NUMBER"; @@ -79,6 +86,14 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD private String provider_name = ""; private int progress = -1; + private void initProviderList() { + List> prototypes = new ArrayList>(); + prototypes.add(new ProviderRenderer(this)); + ProviderRendererBuilder providerRendererBuilder = new ProviderRendererBuilder(prototypes); + adapter = new RendererAdapter(getLayoutInflater(), providerRendererBuilder, provider_manager); + provider_list_view.setAdapter(adapter); + } + @Override protected void onSaveInstanceState(@NotNull Bundle outState) { if(mProgressBar != null) @@ -96,11 +111,10 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD super.onCreate(savedInstanceState); preferences = getSharedPreferences(Dashboard.SHARED_PREFERENCES, MODE_PRIVATE); fragment_manager = new FragmentManagerEnhanced(getFragmentManager()); + provider_manager = new ProviderManager(getAssets()); setUpInitialUI(); - loadPreseededProviders(); - setUpProviderAPIResultReceiver(); setUpProviderList(); @@ -146,14 +160,15 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } private void setUpProviderList() { - provider_list_fragment = ProviderListFragment.newInstance(); - - Bundle arguments = new Bundle(); - int configuration_wizard_request_code = getIntent().getIntExtra(Dashboard.REQUEST_CODE, -1); - if(configuration_wizard_request_code == Dashboard.SWITCH_PROVIDER) - arguments.putBoolean(ProviderListFragment.SHOW_ALL_PROVIDERS, true); - - provider_list_fragment.setArguments(arguments); + initProviderList(); + // provider_list_fragment = ProviderListFragment.newInstance(); + + // Bundle arguments = new Bundle(); + // int configuration_wizard_request_code = getIntent().getIntExtra(Dashboard.REQUEST_CODE, -1); + // if(configuration_wizard_request_code == Dashboard.SWITCH_PROVIDER) + // arguments.putBoolean(ProviderListFragment.SHOW_ALL_PROVIDERS, true); + + // provider_list_fragment.setArguments(arguments); } @@ -325,49 +340,6 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD return listItem.getMeasuredHeight(); } - /** - * Loads providers data from url files contained in the assets folder - * @return true if the files were correctly read - */ - private boolean loadPreseededProviders() { - boolean loaded_preseeded_providers = true; - try { - //TODO Put that folder in a better place (also inside the "for") - String[] urls_filepaths = getAssets().list(ASSETS_URL_FOLDER); - for(String url_filepath : urls_filepaths) { - addNewProviderToList(url_filepath); - } - } catch (IOException e) { - loaded_preseeded_providers = false; - } - - return loaded_preseeded_providers; - } - - private void addNewProviderToList(String url_filepath) { - String provider_main_url = extractProviderMainUrlFromAssetsFile(ASSETS_URL_FOLDER + "/" + url_filepath); - if(getId(provider_main_url).isEmpty()) { - String provider_name = url_filepath.subSequence(0, url_filepath.lastIndexOf(".")).toString(); - ProviderListContent.addItem(new ProviderItem(provider_name, provider_main_url)); - } - } - - private String extractProviderMainUrlFromAssetsFile(String file_path) { - String provider_main_url = ""; - try { - InputStream input_stream_file_contents = getAssets().open(file_path); - byte[] urls_file_bytes = new byte[input_stream_file_contents.available()]; - if(input_stream_file_contents.read(urls_file_bytes) > 0) { - String urls_file_content = new String(urls_file_bytes); - JSONObject file_contents = new JSONObject(urls_file_content); - provider_main_url = file_contents.getString(Provider.MAIN_URL); - } - } catch (JSONException e) { - } catch (IOException e) { - } - return provider_main_url; - } - private String getId(String provider_main_url) { try { URL provider_url = new URL(provider_main_url); @@ -465,17 +437,14 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } public void showAndSelectProvider(String provider_main_url, boolean danger_on) { - if(getId(provider_main_url).isEmpty()) - showProvider(provider_main_url); + try { + provider_manager.add(new Provider(new URL((provider_main_url)))); + } catch (MalformedURLException e) { + e.printStackTrace(); + } autoSelectProvider(provider_main_url, danger_on); } - private void showProvider(final String provider_main_url) { - String provider_name = provider_main_url.replaceFirst("http[s]?://", "").replaceFirst("\\/", "_"); - ProviderItem added_provider = new ProviderItem(provider_name, provider_main_url); - provider_list_fragment.addItem(added_provider); - } - private void autoSelectProvider(String provider_main_url, boolean danger_on) { preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).apply(); onItemSelected(getId(provider_main_url)); -- cgit v1.2.3 From 202036aa6befcb1c74a76803f22e020404d4ba34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Thu, 4 Dec 2014 18:42:06 +0100 Subject: Click on an item, no UI but functional. --- .../se/leap/bitmaskclient/ConfigurationWizard.java | 52 +++++++++++----------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index f178b754..53a7eb46 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -19,6 +19,7 @@ package se.leap.bitmaskclient; import android.app.*; import android.content.*; import android.os.*; +import android.util.Log; import android.view.*; import android.widget.*; @@ -31,6 +32,7 @@ import java.util.*; import butterknife.ButterKnife; import butterknife.InjectView; +import butterknife.OnItemClick; import org.jetbrains.annotations.NotNull; import org.json.*; @@ -52,7 +54,7 @@ import se.leap.bitmaskclient.eip.Constants; * */ public class ConfigurationWizard extends Activity -implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderDetailFragmentInterface, DownloadFailedDialogInterface, Receiver { +implements NewProviderDialogInterface, ProviderDetailFragmentInterface, DownloadFailedDialogInterface, Receiver { @InjectView(R.id.progressbar_configuration_wizard) ProgressBar mProgressBar; @InjectView(R.id.progressbar_description) TextView progressbar_description; @@ -63,7 +65,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD private ProviderManager provider_manager; private ProviderListFragment provider_list_fragment; private Intent mConfigState = new Intent(); - private ProviderItem selected_provider; + private Provider selected_provider; final public static String TAG = ConfigurationWizard.class.getSimpleName(); final public static String TYPE_OF_CERTIFICATE = "type_of_certificate"; @@ -101,7 +103,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD if(progressbar_description != null) outState.putString(PROGRESSBAR_TEXT, progressbar_description.getText().toString()); if(selected_provider != null) - outState.putString(Provider.NAME, selected_provider.name()); + outState.putParcelable(Provider.KEY, selected_provider); outState.putParcelable(ProviderAPI.RECEIVER_KEY, providerAPI_result_receiver); super.onSaveInstanceState(outState); } @@ -127,7 +129,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD private void restoreState(Bundle savedInstanceState) { progressbar_text = savedInstanceState.getString(PROGRESSBAR_TEXT, ""); provider_name = savedInstanceState.getString(Provider.NAME, ""); - selected_provider = getProvider(provider_name); + selected_provider = savedInstanceState.getParcelable(Provider.KEY); progress = savedInstanceState.getInt(PROGRESSBAR_NUMBER, -1); providerAPI_result_receiver = savedInstanceState.getParcelable(ProviderAPI.RECEIVER_KEY); providerAPI_result_receiver.setReceiver(this); @@ -232,21 +234,17 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD // I need this for CW to wait for the About activity to end before going back to Dashboard. } } - - /** - * Callback method from {@link ProviderListFragment.Callbacks} - * indicating that the item with the given ID was selected. - */ - @Override - public void onItemSelected(String id) { - //TODO Code 2 pane view - selected_provider = getProvider(id); - onItemSelectedUi(selected_provider); + + @OnItemClick(R.id.provider_list) + void onItemSelected(int position) { + //TODO Code 2 pane view + selected_provider = adapter.getItem(position); + //onItemSelectedUi(selected_provider); boolean danger_on = true; if(preferences.contains(ProviderItem.DANGER_ON)) danger_on = preferences.getBoolean(ProviderItem.DANGER_ON, false); - setUpProvider(selected_provider.providerMainUrl(), danger_on); + setUpProvider(selected_provider.mainUrl(), danger_on); } private void onItemSelectedUi(ProviderItem provider) { @@ -436,29 +434,31 @@ implements ProviderListFragment.Callbacks, NewProviderDialogInterface, ProviderD } } - public void showAndSelectProvider(String provider_main_url, boolean danger_on) { + public void showAndSelectProvider(String provider_main_url, boolean danger_on) { try { - provider_manager.add(new Provider(new URL((provider_main_url)))); + selected_provider = new Provider(new URL((provider_main_url))); + provider_manager.add(selected_provider); + autoSelectProvider(selected_provider, danger_on); } catch (MalformedURLException e) { e.printStackTrace(); } - autoSelectProvider(provider_main_url, danger_on); - } - - private void autoSelectProvider(String provider_main_url, boolean danger_on) { - preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).apply(); - onItemSelected(getId(provider_main_url)); - } + } + + private void autoSelectProvider(Provider provider, boolean danger_on) { + preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).apply(); + selected_provider = provider; + //onItemSelectedUi(selected_provider); + } /** * Asks ProviderAPI to download a new provider.json file n * @param provider_main_url * @param danger_on tells if HTTPS client should bypass certificate errors */ - public void setUpProvider(String provider_main_url, boolean danger_on) { + public void setUpProvider(URL provider_main_url, boolean danger_on) { Intent provider_API_command = new Intent(this, ProviderAPI.class); Bundle parameters = new Bundle(); - parameters.putString(Provider.MAIN_URL, provider_main_url); + parameters.putString(Provider.MAIN_URL, provider_main_url.toString()); parameters.putBoolean(ProviderItem.DANGER_ON, danger_on); provider_API_command.setAction(ProviderAPI.SET_UP_PROVIDER); -- cgit v1.2.3 From 84f71ca604abb2b4aeb410dcec2c3cc5dff9bc39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 9 Dec 2014 11:20:31 +0100 Subject: Switching provider doesn't refresh provider list. It shows just one provider, and it's not the one that gets configured if selected. --- .../se/leap/bitmaskclient/ConfigurationWizard.java | 100 ++++++--------------- 1 file changed, 25 insertions(+), 75 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 53a7eb46..dfca91ba 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -19,22 +19,18 @@ package se.leap.bitmaskclient; import android.app.*; import android.content.*; import android.os.*; -import android.util.Log; import android.view.*; import android.widget.*; -import com.pedrogomez.renderers.Renderer; -import com.pedrogomez.renderers.RendererAdapter; +import com.pedrogomez.renderers.*; -import java.io.*; import java.net.*; import java.util.*; -import butterknife.ButterKnife; -import butterknife.InjectView; -import butterknife.OnItemClick; +import butterknife.*; import org.jetbrains.annotations.NotNull; -import org.json.*; +import org.json.JSONException; +import org.json.JSONObject; import javax.inject.Inject; @@ -60,10 +56,9 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download @InjectView(R.id.progressbar_description) TextView progressbar_description; @InjectView(R.id.provider_list) ListView provider_list_view; - @Inject RendererAdapter adapter; + @Inject ProviderListAdapter adapter; private ProviderManager provider_manager; - private ProviderListFragment provider_list_fragment; private Intent mConfigState = new Intent(); private Provider selected_provider; @@ -92,7 +87,7 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download List> prototypes = new ArrayList>(); prototypes.add(new ProviderRenderer(this)); ProviderRendererBuilder providerRendererBuilder = new ProviderRendererBuilder(prototypes); - adapter = new RendererAdapter(getLayoutInflater(), providerRendererBuilder, provider_manager); + adapter = new ProviderListAdapter(getLayoutInflater(), providerRendererBuilder, provider_manager); provider_list_view.setAdapter(adapter); } @@ -140,7 +135,7 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download super.onPostResume(); if(!progressbar_text.isEmpty() && !provider_name.isEmpty() && progress != -1) { progressbar_description.setText(progressbar_text); - onItemSelectedUi(getProvider(provider_name)); + //onItemSelectedUi(getProvider(provider_name)); mProgressBar.setProgress(progress); progressbar_text = ""; @@ -196,6 +191,14 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download if(resultCode == ProviderAPI.PROVIDER_OK) { mConfigState.setAction(PROVIDER_SET); + try { + String provider_json_string = preferences.getString(Provider.KEY, ""); + if(!provider_json_string.isEmpty()) + selected_provider.define(new JSONObject(provider_json_string)); + } catch (JSONException e) { + e.printStackTrace(); + } + if (preferences.getBoolean(Constants.ALLOWED_ANON, false)){ mConfigState.putExtra(SERVICES_RETRIEVED, true); @@ -239,7 +242,7 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download void onItemSelected(int position) { //TODO Code 2 pane view selected_provider = adapter.getItem(position); - //onItemSelectedUi(selected_provider); + onItemSelectedUi(selected_provider); boolean danger_on = true; if(preferences.contains(ProviderItem.DANGER_ON)) @@ -247,10 +250,9 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download setUpProvider(selected_provider.mainUrl(), danger_on); } - private void onItemSelectedUi(ProviderItem provider) { + private void onItemSelectedUi(Provider provider) { startProgressBar(); - int provider_index = getProviderIndex(provider.name()); - provider_list_fragment.hideAllBut(provider_index); + adapter.hideAllBut(adapter.indexOf(provider)); } @Override @@ -288,15 +290,6 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download setResult(RESULT_CANCELED, ask_quit); } - private ProviderItem getProvider(String name) { - for (ProviderItem provider : ProviderListContent.ITEMS) { - if (provider.name().equalsIgnoreCase(name)) { - return provider; - } - } - return null; - } - private void startProgressBar() { mProgressBar.setVisibility(ProgressBar.VISIBLE); progressbar_description.setVisibility(TextView.VISIBLE); @@ -307,21 +300,9 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download mProgressBar.setTranslationY(measured_height); progressbar_description.setTranslationY(measured_height + mProgressBar.getHeight()); } - - private int getProviderIndex(String id) { - int index = 0; - for (ProviderItem provider : ProviderListContent.ITEMS) { - if (provider.name().equalsIgnoreCase(id)) { - break; - } else index++; - } - return index; - } private int listItemHeight() { - ListView provider_list_view = (ListView)findViewById(android.R.id.list); - ListAdapter provider_list_adapter = provider_list_view.getAdapter(); - View listItem = provider_list_adapter.getView(0, null, provider_list_view); + View listItem = adapter.getView(0, null, provider_list_view); listItem.setLayoutParams(new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); @@ -338,35 +319,6 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download return listItem.getMeasuredHeight(); } - private String getId(String provider_main_url) { - try { - URL provider_url = new URL(provider_main_url); - for (ProviderItem provider : ProviderListContent.ITEMS) { - URL aux_provider_url = new URL(provider.providerMainUrl()); - if (isSameURL(provider_url, aux_provider_url)) { - return provider.name(); - } - } - } catch (MalformedURLException e) { - e.printStackTrace(); - } - return ""; - } - - /** - * Checks, whether 2 urls are pointing to the same location. - * - * @param url a url - * @param baseUrl an other url, that should be compared. - * @return true, if the urls point to the same host and port and use the - * same protocol, false otherwise. - */ - private boolean isSameURL(final URL url, final URL baseUrl) { - return url.getProtocol().equals(baseUrl.getProtocol()) && - url.getHost().equals(baseUrl.getHost()) && - url.getPort() == baseUrl.getPort(); - } - /** * Asks ProviderAPI to download an anonymous (anon) VPN certificate. */ @@ -503,16 +455,11 @@ n * @param provider_main_url } public void showAllProviders() { - provider_list_fragment = (ProviderListFragment) fragment_manager.findFragmentByTag(ProviderListFragment.TAG); - if(provider_list_fragment != null) - provider_list_fragment.unhideAll(); + adapter.showAllProviders(); } public void cancelSettingUpProvider() { - provider_list_fragment = (ProviderListFragment) fragment_manager.findFragmentByTag(ProviderListFragment.TAG); - if(provider_list_fragment != null && preferences.contains(ProviderItem.DANGER_ON)) { - provider_list_fragment.removeLastItem(); - } + showAllProviders(); preferences.edit().remove(Provider.KEY).remove(ProviderItem.DANGER_ON).remove(Constants.ALLOWED_ANON).remove(Constants.KEY).apply(); } @@ -520,6 +467,7 @@ n * @param provider_main_url public void login() { Intent ask_login = new Intent(); ask_login.putExtra(LogInDialog.TAG, LogInDialog.TAG); + ask_login.putExtra(Provider.KEY, selected_provider); setResult(RESULT_OK, ask_login); setting_up_provider = false; finish(); @@ -527,7 +475,9 @@ n * @param provider_main_url @Override public void use_anonymously() { - setResult(RESULT_OK); + Intent pass_provider = new Intent(); + pass_provider.putExtra(Provider.KEY, selected_provider); + setResult(RESULT_OK, pass_provider); setting_up_provider = false; finish(); } -- cgit v1.2.3 From 7da04dc635505c0bcfdcc2c86d186a7a6f0535f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 9 Dec 2014 12:08:40 +0100 Subject: Release flavor updated, back button works. --- .../se/leap/bitmaskclient/ConfigurationWizard.java | 27 ++++++++-------------- 1 file changed, 9 insertions(+), 18 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index dfca91ba..20545473 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -258,9 +258,10 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download @Override public void onBackPressed() { if(setting_up_provider) { - stopSettingUpProvider(); + stopSettingUpProvider(); } else { - usualBackButton(); + askDashboardToQuitApp(); + super.onBackPressed(); } } @@ -270,18 +271,13 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download mProgressBar.setProgress(0); progressbar_description.setVisibility(TextView.GONE); - preferences.edit().remove(Provider.KEY).apply(); - setting_up_provider = false; - showAllProviders(); + cancelSettingUpProvider(); } - - private void usualBackButton() { - if(preferences.getString(Provider.KEY, "").isEmpty()) { - askDashboardToQuitApp(); - } else { - setResult(RESULT_OK); - } - super.onBackPressed(); + + public void cancelSettingUpProvider() { + showAllProviders(); + setting_up_provider = false; + preferences.edit().remove(Provider.KEY).remove(ProviderItem.DANGER_ON).remove(Constants.ALLOWED_ANON).remove(Constants.KEY).commit(); } private void askDashboardToQuitApp() { @@ -457,11 +453,6 @@ n * @param provider_main_url public void showAllProviders() { adapter.showAllProviders(); } - - public void cancelSettingUpProvider() { - showAllProviders(); - preferences.edit().remove(Provider.KEY).remove(ProviderItem.DANGER_ON).remove(Constants.ALLOWED_ANON).remove(Constants.KEY).apply(); - } @Override public void login() { -- cgit v1.2.3 From 5978db9bf758b7b229616d0575e327c58ad8cf94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 9 Dec 2014 14:08:17 +0100 Subject: EIP fragment shown correctly. --- .../java/se/leap/bitmaskclient/ConfigurationWizard.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 20545473..9af31fd8 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -242,12 +242,15 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download void onItemSelected(int position) { //TODO Code 2 pane view selected_provider = adapter.getItem(position); + onItemSelectedLogic(selected_provider); onItemSelectedUi(selected_provider); + } - boolean danger_on = true; - if(preferences.contains(ProviderItem.DANGER_ON)) - danger_on = preferences.getBoolean(ProviderItem.DANGER_ON, false); - setUpProvider(selected_provider.mainUrl(), danger_on); + private void onItemSelectedLogic(Provider selected_provider) { + boolean danger_on = true; + if(preferences.contains(ProviderItem.DANGER_ON)) + danger_on = preferences.getBoolean(ProviderItem.DANGER_ON, false); + setUpProvider(selected_provider.mainUrl(), danger_on); } private void onItemSelectedUi(Provider provider) { @@ -255,6 +258,8 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download adapter.hideAllBut(adapter.indexOf(provider)); } + + @Override public void onBackPressed() { if(setting_up_provider) { @@ -395,7 +400,8 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download private void autoSelectProvider(Provider provider, boolean danger_on) { preferences.edit().putBoolean(ProviderItem.DANGER_ON, danger_on).apply(); selected_provider = provider; - //onItemSelectedUi(selected_provider); + onItemSelectedLogic(selected_provider); + onItemSelectedUi(selected_provider); } /** -- cgit v1.2.3 From 7bbb5b69717393d87869ae6f16d6aff0578a81bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 9 Dec 2014 15:58:09 +0100 Subject: Save custom providers to sdcard. --- .../java/se/leap/bitmaskclient/ConfigurationWizard.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 9af31fd8..2e3fb8f1 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -108,7 +108,7 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download super.onCreate(savedInstanceState); preferences = getSharedPreferences(Dashboard.SHARED_PREFERENCES, MODE_PRIVATE); fragment_manager = new FragmentManagerEnhanced(getFragmentManager()); - provider_manager = new ProviderManager(getAssets()); + provider_manager = ProviderManager.getInstance(getAssets(), getExternalFilesDir(null)); setUpInitialUI(); @@ -158,15 +158,6 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download private void setUpProviderList() { initProviderList(); - // provider_list_fragment = ProviderListFragment.newInstance(); - - // Bundle arguments = new Bundle(); - // int configuration_wizard_request_code = getIntent().getIntExtra(Dashboard.REQUEST_CODE, -1); - // if(configuration_wizard_request_code == Dashboard.SWITCH_PROVIDER) - // arguments.putBoolean(ProviderListFragment.SHOW_ALL_PROVIDERS, true); - - // provider_list_fragment.setArguments(arguments); - } @Override @@ -390,7 +381,8 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download public void showAndSelectProvider(String provider_main_url, boolean danger_on) { try { selected_provider = new Provider(new URL((provider_main_url))); - provider_manager.add(selected_provider); + adapter.add(selected_provider); + adapter.saveProviders(); autoSelectProvider(selected_provider, danger_on); } catch (MalformedURLException e) { e.printStackTrace(); -- cgit v1.2.3 From 062e4c4597f947816282b1c9c5e63c034549f057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 9 Dec 2014 18:57:35 +0100 Subject: Final refactoring for this bug. Removed the sign up dialog, log in one is enough with the third button I added some time ago to sign up. Removed classes we don't need due to the libraries I have recently introduced. --- app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 2e3fb8f1..63185d12 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -455,7 +455,7 @@ n * @param provider_main_url @Override public void login() { Intent ask_login = new Intent(); - ask_login.putExtra(LogInDialog.TAG, LogInDialog.TAG); + ask_login.putExtra(SessionDialog.TAG, SessionDialog.TAG); ask_login.putExtra(Provider.KEY, selected_provider); setResult(RESULT_OK, ask_login); setting_up_provider = false; -- cgit v1.2.3 From 2d764ff0261e902e3b41f7f5e1d79df52e51a1ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 9 Dec 2014 21:01:50 +0100 Subject: Bug in the add provider to the adapter fixed. Refactored the new provider dialog too. --- app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java') diff --git a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java index 63185d12..ac2e00b8 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ConfigurationWizard.java @@ -333,8 +333,7 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download */ public void addAndSelectNewProvider() { FragmentTransaction fragment_transaction = fragment_manager.removePreviousFragment(NewProviderDialog.TAG); - DialogFragment newFragment = NewProviderDialog.newInstance(); - newFragment.show(fragment_transaction, NewProviderDialog.TAG); + new NewProviderDialog().show(fragment_transaction, NewProviderDialog.TAG); } /** @@ -343,7 +342,7 @@ implements NewProviderDialogInterface, ProviderDetailFragmentInterface, Download public void addAndSelectNewProvider(String main_url, boolean danger_on) { FragmentTransaction fragment_transaction = fragment_manager.removePreviousFragment(NewProviderDialog.TAG); - DialogFragment newFragment = NewProviderDialog.newInstance(); + DialogFragment newFragment = new NewProviderDialog(); Bundle data = new Bundle(); data.putString(Provider.MAIN_URL, main_url); data.putBoolean(ProviderItem.DANGER_ON, danger_on); -- cgit v1.2.3