summaryrefslogtreecommitdiff
path: root/app/src/custom
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/custom')
-rw-r--r--app/src/custom/java/se/leap/bitmaskclient/base/fragments/EipFragment.java686
-rw-r--r--app/src/custom/java/se/leap/bitmaskclient/base/views/MainButton.java124
-rw-r--r--app/src/custom/res/animator/alpha2.xml10
-rw-r--r--app/src/custom/res/animator/alpha3.xml4
-rw-r--r--app/src/custom/res/drawable-ldpi/logo.pngbin8743 -> 0 bytes
-rw-r--r--app/src/custom/res/drawable-mdpi/logo.pngbin6324 -> 0 bytes
-rw-r--r--app/src/custom/res/drawable-xxxhdpi/logo.pngbin43251 -> 0 bytes
-rw-r--r--app/src/custom/res/drawable/background_eip.xml11
-rw-r--r--app/src/custom/res/drawable/ravens.xml (renamed from app/src/custom/res/drawable/ravens3.xml)0
-rw-r--r--app/src/custom/res/drawable/ravens1.xml16
-rw-r--r--app/src/custom/res/drawable/ravens2.xml24
-rw-r--r--app/src/custom/res/drawable/rotate_progress_image.xml14
-rw-r--r--app/src/custom/res/drawable/state_connecting.xml4
-rw-r--r--app/src/custom/res/drawable/state_disconnected.xml (renamed from app/src/custom/res/drawable/crow.xml)0
-rw-r--r--app/src/custom/res/layout-port/f_eip.xml113
-rw-r--r--app/src/custom/res/layout-xlarge-port/f_eip.xml122
-rw-r--r--app/src/custom/res/layout-xlarge/f_eip.xml127
-rw-r--r--app/src/custom/res/layout/f_eip.xml146
-rw-r--r--app/src/custom/res/layout/v_location_button.xml104
-rw-r--r--app/src/custom/res/layout/v_main_button.xml142
20 files changed, 32 insertions, 1615 deletions
diff --git a/app/src/custom/java/se/leap/bitmaskclient/base/fragments/EipFragment.java b/app/src/custom/java/se/leap/bitmaskclient/base/fragments/EipFragment.java
deleted file mode 100644
index 2588f436..00000000
--- a/app/src/custom/java/se/leap/bitmaskclient/base/fragments/EipFragment.java
+++ /dev/null
@@ -1,686 +0,0 @@
-/**
- * Copyright (c) 2018 LEAP Encryption Access Project and contributers
- *
- * 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
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-package se.leap.bitmaskclient.base.fragments;
-
-import static de.blinkt.openvpn.core.ConnectionStatus.LEVEL_NONETWORK;
-import static se.leap.bitmaskclient.R.string.vpn_certificate_user_message;
-import static se.leap.bitmaskclient.base.models.Constants.ASK_TO_CANCEL_VPN;
-import static se.leap.bitmaskclient.base.models.Constants.EIP_ACTION_START;
-import static se.leap.bitmaskclient.base.models.Constants.EIP_EARLY_ROUTES;
-import static se.leap.bitmaskclient.base.models.Constants.EIP_RESTART_ON_BOOT;
-import static se.leap.bitmaskclient.base.models.Constants.PROVIDER_KEY;
-import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_CONFIGURE_LEAP;
-import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_LOG_IN;
-import static se.leap.bitmaskclient.base.models.Constants.REQUEST_CODE_SWITCH_PROVIDER;
-import static se.leap.bitmaskclient.base.models.Constants.SHARED_PREFERENCES;
-import static se.leap.bitmaskclient.base.utils.ConfigHelper.isDefaultBitmask;
-import static se.leap.bitmaskclient.base.utils.PreferenceHelper.getPreferredCity;
-import static se.leap.bitmaskclient.base.utils.ViewHelper.convertDimensionToPx;
-import static se.leap.bitmaskclient.eip.EipSetupObserver.gatewayOrder;
-import static se.leap.bitmaskclient.eip.EipSetupObserver.reconnectingWithDifferentGateway;
-import static se.leap.bitmaskclient.eip.GatewaysManager.Load.UNKNOWN;
-import static se.leap.bitmaskclient.providersetup.ProviderAPI.DOWNLOAD_GEOIP_JSON;
-import static se.leap.bitmaskclient.providersetup.ProviderAPI.UPDATE_INVALID_VPN_CERTIFICATE;
-import static se.leap.bitmaskclient.providersetup.ProviderAPI.USER_MESSAGE;
-
-import android.app.Activity;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.content.SharedPreferences;
-import android.graphics.ColorMatrix;
-import android.graphics.ColorMatrixColorFilter;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.Vibrator;
-import android.text.Spannable;
-import android.text.SpannableString;
-import android.text.TextUtils;
-import android.text.style.RelativeSizeSpan;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.widget.AppCompatImageView;
-import androidx.appcompat.widget.AppCompatTextView;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentTransaction;
-
-import java.util.Observable;
-import java.util.Observer;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import butterknife.OnClick;
-import butterknife.Unbinder;
-import de.blinkt.openvpn.core.ConnectionStatus;
-import de.blinkt.openvpn.core.IOpenVPNServiceInternal;
-import de.blinkt.openvpn.core.OpenVPNService;
-import de.blinkt.openvpn.core.VpnStatus;
-import de.blinkt.openvpn.core.connection.Connection;
-import se.leap.bitmaskclient.BuildConfig;
-import se.leap.bitmaskclient.R;
-import se.leap.bitmaskclient.base.FragmentManagerEnhanced;
-import se.leap.bitmaskclient.base.MainActivity;
-import se.leap.bitmaskclient.base.fragments.DonationReminderDialog;
-import se.leap.bitmaskclient.base.fragments.GatewaySelectionFragment;
-import se.leap.bitmaskclient.base.models.Provider;
-import se.leap.bitmaskclient.base.models.ProviderObservable;
-import se.leap.bitmaskclient.base.utils.PreferenceHelper;
-import se.leap.bitmaskclient.base.views.LocationButton;
-import se.leap.bitmaskclient.base.views.MainButton;
-import se.leap.bitmaskclient.eip.EipCommand;
-import se.leap.bitmaskclient.eip.EipStatus;
-import se.leap.bitmaskclient.eip.GatewaysManager;
-import se.leap.bitmaskclient.providersetup.ProviderAPICommand;
-import se.leap.bitmaskclient.providersetup.ProviderListActivity;
-import se.leap.bitmaskclient.providersetup.activities.CustomProviderSetupActivity;
-import se.leap.bitmaskclient.providersetup.activities.LoginActivity;
-import se.leap.bitmaskclient.providersetup.models.LeapSRPSession;
-import se.leap.bitmaskclient.tor.TorServiceCommand;
-import se.leap.bitmaskclient.tor.TorStatusObservable;
-
-public class EipFragment extends Fragment implements Observer {
-
- public final static String TAG = EipFragment.class.getSimpleName();
-
-
- private SharedPreferences preferences;
- private Provider provider;
-
- @BindView(R.id.background)
- AppCompatImageView background;
-
- @BindView(R.id.main_button)
- MainButton mainButton;
-
- @BindView(R.id.gateway_location_button)
- LocationButton locationButton;
-
- @BindView(R.id.main_description)
- AppCompatTextView mainDescription;
-
- @BindView(R.id.sub_description)
- AppCompatTextView subDescription;
-
- private Unbinder unbinder;
- private EipStatus eipStatus;
- private ProviderObservable providerObservable;
- private TorStatusObservable torStatusObservable;
-
- private GatewaysManager gatewaysManager;
-
- //---saved Instance -------
- private final String KEY_SHOW_PENDING_START_CANCELLATION = "KEY_SHOW_PENDING_START_CANCELLATION";
- private final String KEY_SHOW_ASK_TO_STOP_EIP = "KEY_SHOW_ASK_TO_STOP_EIP";
- private boolean showPendingStartCancellation = false;
- private boolean showAskToStopEip = false;
- //------------------------
- AlertDialog alertDialog;
-
- private IOpenVPNServiceInternal mService;
- // We use this service connection to detect if openvpn is running without network
- private EipFragmentServiceConnection openVpnConnection;
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- Bundle arguments = getArguments();
- Activity activity = getActivity();
- if (activity != null) {
- if (arguments != null) {
- provider = arguments.getParcelable(PROVIDER_KEY);
- if (provider == null) {
- handleNoProvider(activity);
- } else {
- Log.d(TAG, provider.getName() + " configured as provider");
- }
- } else {
- handleNoProvider(activity);
- }
- }
- }
-
- private void handleNoProvider(Activity activity) {
- if (isDefaultBitmask()) {
- activity.startActivityForResult(new Intent(activity, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);
- } else {
- Log.e(TAG, "no provider given - try to reconfigure custom provider");
- startActivityForResult(new Intent(activity, CustomProviderSetupActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
-
- }
-
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- openVpnConnection = new EipFragmentServiceConnection();
- eipStatus = EipStatus.getInstance();
- providerObservable = ProviderObservable.getInstance();
- torStatusObservable = TorStatusObservable.getInstance();
- Activity activity = getActivity();
- if (activity != null) {
- preferences = getActivity().getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
- } else {
- Log.e(TAG, "activity is null in onCreate - no preferences set!");
- }
-
- gatewaysManager = new GatewaysManager(getContext());
-
-
- }
-
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- eipStatus.addObserver(this);
- torStatusObservable.addObserver(this);
- providerObservable.addObserver(this);
- View view = inflater.inflate(R.layout.f_eip, container, false);
- unbinder = ButterKnife.bind(this, view);
-
- try {
- Bundle arguments = getArguments();
- if (arguments != null && arguments.containsKey(ASK_TO_CANCEL_VPN) && arguments.getBoolean(ASK_TO_CANCEL_VPN)) {
- arguments.remove(ASK_TO_CANCEL_VPN);
- setArguments(arguments);
- askToStopEIP();
- }
- } catch (IllegalStateException e) {
- // probably setArguments failed because the fragments state is already saved
- e.printStackTrace();
- }
-
- restoreFromSavedInstance(savedInstanceState);
- locationButton.setOnClickListener(v -> {
- FragmentManagerEnhanced fragmentManager = new FragmentManagerEnhanced(getActivity().getSupportFragmentManager());
- Fragment fragment = new GatewaySelectionFragment();
- fragmentManager.replace(R.id.main_container, fragment, MainActivity.TAG);
- });
- return view;
- }
-
- @Override
- public void onStart() {
- super.onStart();
- if (DonationReminderDialog.isCallable(getContext())) {
- showDonationReminderDialog();
- }
- }
-
- @Override
- public void onResume() {
- super.onResume();
- if (!eipStatus.isDisconnected()) {
- openVpnConnection.bindService();
- }
- handleNewState();
- }
-
- @Override
- public void onPause() {
- super.onPause();
- openVpnConnection.unbindService();
- }
-
- @Override
- public void onSaveInstanceState(@NonNull Bundle outState) {
- super.onSaveInstanceState(outState);
- if (showAskToStopEip) {
- outState.putBoolean(KEY_SHOW_ASK_TO_STOP_EIP, true);
- alertDialog.dismiss();
- } else if (showPendingStartCancellation) {
- outState.putBoolean(KEY_SHOW_PENDING_START_CANCELLATION, true);
- alertDialog.dismiss();
- }
- }
-
- private void restoreFromSavedInstance(Bundle savedInstanceState) {
- if (savedInstanceState != null && savedInstanceState.containsKey(KEY_SHOW_PENDING_START_CANCELLATION)) {
- showPendingStartCancellation = true;
- askPendingStartCancellation();
- } else if (savedInstanceState != null && savedInstanceState.containsKey(KEY_SHOW_ASK_TO_STOP_EIP)) {
- showAskToStopEip = true;
- askToStopEIP();
- }
- }
-
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- eipStatus.deleteObserver(this);
- providerObservable.deleteObserver(this);
- torStatusObservable.deleteObserver(this);
- unbinder.unbind();
- }
-
- private void saveStatus(boolean restartOnBoot) {
- preferences.edit().putBoolean(EIP_RESTART_ON_BOOT, restartOnBoot).apply();
- }
-
- @OnClick(R.id.main_button)
- void onButtonClick() {
- handleIcon();
- }
-
- void handleIcon() {
- if (isOpenVpnRunningWithoutNetwork() || eipStatus.isConnected() || eipStatus.isConnecting() || eipStatus.isUpdatingVpnCert())
- handleSwitchOff();
- else
- handleSwitchOn();
- }
-
- private void handleSwitchOn() {
- Context context = getContext();
- if (context == null) {
- Log.e(TAG, "context is null when switch turning on");
- return;
- }
-
- if (canStartEIP()) {
- startEipFromScratch();
- } else if (canLogInToStartEIP()) {
- askUserToLogIn(getString(vpn_certificate_user_message));
- } else {
- // provider has no VpnCertificate but user is logged in
- updateInvalidVpnCertificate();
- }
- }
-
- private boolean canStartEIP() {
- boolean certificateExists = provider.hasVpnCertificate();
- boolean isAllowedAnon = provider.allowsAnonymous();
- return (isAllowedAnon || certificateExists) && !eipStatus.isConnected() && !eipStatus.isConnecting();
- }
-
- private boolean canLogInToStartEIP() {
- boolean isAllowedRegistered = provider.allowsRegistered();
- boolean isLoggedIn = LeapSRPSession.loggedIn();
- return isAllowedRegistered && !isLoggedIn && !eipStatus.isConnecting() && !eipStatus.isConnected();
- }
-
- private void handleSwitchOff() {
- if (isOpenVpnRunningWithoutNetwork() || eipStatus.isConnecting() || eipStatus.isUpdatingVpnCert()) {
- askPendingStartCancellation();
- } else if (eipStatus.isConnected()) {
- askToStopEIP();
- }
- }
-
- private void setMainButtonEnabled(boolean enabled) {
- locationButton.setEnabled(enabled);
- mainButton.setEnabled(enabled);
- }
-
- public void startEipFromScratch() {
- saveStatus(true);
- Context context = getContext();
- if (context == null) {
- Log.e(TAG, "context is null when trying to start VPN");
- return;
- }
- if (!provider.getGeoipUrl().isDefault() && provider.shouldUpdateGeoIpJson()) {
- Bundle bundle = new Bundle();
- bundle.putBoolean(EIP_ACTION_START, true);
- bundle.putBoolean(EIP_EARLY_ROUTES, false);
- ProviderAPICommand.execute(context, DOWNLOAD_GEOIP_JSON, bundle, provider);
- } else {
- EipCommand.startVPN(context, false);
- }
- EipStatus.getInstance().updateState("UI_CONNECTING", "", 0, ConnectionStatus.LEVEL_START);
- }
-
- protected void stopEipIfPossible() {
- Context context = getContext();
- if (context == null) {
- Log.e(TAG, "context is null when trying to stop EIP");
- return;
- }
- EipCommand.stopVPN(context);
- }
-
- private void askPendingStartCancellation() {
- Activity activity = getActivity();
- if (activity == null) {
- Log.e(TAG, "activity is null when asking to cancel");
- return;
- }
-
- try {
- AlertDialog.Builder alertBuilder = new AlertDialog.Builder(getActivity());
- showPendingStartCancellation = true;
- alertDialog = alertBuilder.setTitle(activity.getString(R.string.eip_cancel_connect_title))
- .setMessage(activity.getString(R.string.eip_cancel_connect_text))
- .setPositiveButton((android.R.string.yes), (dialog, which) -> {
- Context context = getContext();
- if (context != null && eipStatus.isUpdatingVpnCert() &&
- TorStatusObservable.isRunning()) {
- TorServiceCommand.stopTorServiceAsync(context.getApplicationContext());
- }
- stopEipIfPossible();
- })
- .setNegativeButton(activity.getString(android.R.string.no), (dialog, which) -> {
- }).setOnDismissListener(dialog -> showPendingStartCancellation = false).show();
- } catch (IllegalStateException e) {
- e.printStackTrace();
- }
-
- }
-
- protected void askToStopEIP() {
- Activity activity = getActivity();
- if (activity == null) {
- Log.e(TAG, "activity is null when asking to stop EIP");
- return;
- }
- try {
- AlertDialog.Builder alertBuilder = new AlertDialog.Builder(activity);
- showAskToStopEip = true;
- alertDialog = alertBuilder.setTitle(activity.getString(R.string.eip_cancel_connect_title))
- .setMessage(activity.getString(R.string.eip_warning_browser_inconsistency))
- .setPositiveButton((android.R.string.yes), (dialog, which) -> stopEipIfPossible())
- .setNegativeButton(activity.getString(android.R.string.no), (dialog, which) -> {
- }).setOnDismissListener(dialog -> showAskToStopEip = false).show();
- } catch (IllegalStateException e) {
- e.printStackTrace();
- }
-
- }
-
- @Override
- public void update(Observable observable, Object data) {
- if (observable instanceof EipStatus) {
- eipStatus = (EipStatus) observable;
- handleNewStateOnMain();
-
- if (eipStatus.isConnecting()) {
- openVpnConnection.bindService();
- }
- if ("NOPROCESS".equals(EipStatus.getInstance().getState())) {
- //assure that the Service is shutdown completely if openvpn was stopped
- openVpnConnection.unbindService();
- }
- } else if (observable instanceof ProviderObservable) {
- provider = ((ProviderObservable) observable).getCurrentProvider();
- } else if (observable instanceof TorStatusObservable && EipStatus.getInstance().isUpdatingVpnCert()) {
- handleNewStateOnMain();
- }
- }
-
- private void handleNewStateOnMain() {
- Activity activity = getActivity();
- if (activity != null) {
- activity.runOnUiThread(this::handleNewState);
- } else {
- Log.e("EipFragment", "activity is null");
- }
- }
-
- private void handleNewState() {
- Activity activity = getActivity();
- if (activity == null) {
- Log.e(TAG, "activity is null while trying to handle new state");
- return;
- }
-
- Log.d(TAG, "eip fragment eipStatus state: " + eipStatus.getState() + " - level: " + eipStatus.getLevel() + " - is reconnecting: " + eipStatus.isReconnecting());
- if (eipStatus.isUpdatingVpnCert()) {
- setMainButtonEnabled(true);
- showConnectionTransitionLayout(true);
- locationButton.setText(getString(R.string.eip_status_start_pending));
- locationButton.setLocationLoad(UNKNOWN);
- locationButton.showBridgeIndicator(false);
- locationButton.showRecommendedIndicator(false);
- mainDescription.setText(null);
- String torStatus = TorStatusObservable.getStringForCurrentStatus(getContext());
- if (!TextUtils.isEmpty(torStatus)) {
- Spannable spannable = new SpannableString(torStatus);
- spannable.setSpan(new RelativeSizeSpan(0.75f), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
- subDescription.setText(TextUtils.concat(getString(R.string.updating_certificate_message) + "\n", spannable));
- } else {
- subDescription.setText(getString(R.string.updating_certificate_message));
- }
- } else if (eipStatus.isConnecting()) {
- setMainButtonEnabled(true);
- showConnectionTransitionLayout(true);
- locationButton.setText(getString(R.string.eip_status_start_pending));
- locationButton.setLocationLoad(UNKNOWN);
- locationButton.showBridgeIndicator(false);
- locationButton.showRecommendedIndicator(false);
- mainDescription.setText(null);
- subDescription.setText(null);
- } else if (eipStatus.isConnected()) {
- setMainButtonEnabled(true);
- mainButton.updateState(true, false, false);
- Connection.TransportType transportType = PreferenceHelper.getUseBridges(getContext()) ? Connection.TransportType.OBFS4 : Connection.TransportType.OPENVPN;
- locationButton.setLocationLoad(PreferenceHelper.useObfuscationPinning(getContext()) ? GatewaysManager.Load.UNKNOWN : gatewaysManager.getLoadForLocation(VpnStatus.getLastConnectedVpnName(), transportType));
- locationButton.setText(VpnStatus.getLastConnectedVpnName());
- locationButton.showBridgeIndicator(VpnStatus.isUsingBridges());
- locationButton.showRecommendedIndicator(getPreferredCity(getContext())== null);
- mainDescription.setText(R.string.eip_state_connected);
- subDescription.setText(null);
- colorBackground();
- } else if(isOpenVpnRunningWithoutNetwork()) {
- Log.d(TAG, "eip fragment eipStatus - isOpenVpnRunningWithoutNetwork");
- setMainButtonEnabled(true);
- mainButton.updateState(true, false, true);
- locationButton.setText(VpnStatus.getCurrentlyConnectingVpnName());
- locationButton.showBridgeIndicator(VpnStatus.isUsingBridges());
- locationButton.showBridgeIndicator(VpnStatus.isUsingBridges());
- locationButton.showRecommendedIndicator(getPreferredCity(getContext())== null);
- colorBackgroundALittle();
- mainDescription.setText(R.string.eip_state_connected);
- subDescription.setText(R.string.eip_state_no_network);
- } else if (eipStatus.isDisconnected() && reconnectingWithDifferentGateway()) {
- showConnectionTransitionLayout(true);
- // showRetryToast(activity);
- locationButton.setText(getString(R.string.eip_status_start_pending));
- locationButton.setLocationLoad(UNKNOWN);
- locationButton.showBridgeIndicator(false);
- locationButton.showRecommendedIndicator(false);
- mainDescription.setText(null);
- subDescription.setText(R.string.reconnecting);
- } else if (eipStatus.isDisconnecting()) {
- setMainButtonEnabled(false);
- showConnectionTransitionLayout(false);
- mainDescription.setText(R.string.eip_state_insecure);
- } else if (eipStatus.isBlocking()) {
- setMainButtonEnabled(true);
- mainButton.updateState(true, false, true);
- colorBackgroundALittle();
- locationButton.setText(getString(R.string.no_location));
- locationButton.setLocationLoad(UNKNOWN);
- locationButton.showBridgeIndicator(false);
- locationButton.showRecommendedIndicator(false);
- mainDescription.setText(R.string.eip_state_connected);
- subDescription.setText(getString(R.string.eip_state_blocking, getString(R.string.app_name)));
- } else {
- locationButton.setText(activity.getString(R.string.vpn_button_turn_on));
- setMainButtonEnabled(true);
- mainButton.updateState(false, false, false);
- greyscaleBackground();
- locationButton.setLocationLoad(UNKNOWN);
- locationButton.showBridgeIndicator(false);
- String city = getPreferredCity(getContext());
- locationButton.setText(city == null ? getString(R.string.gateway_selection_recommended_location) : city);
- locationButton.showRecommendedIndicator(false);
- mainDescription.setText(R.string.eip_state_insecure);
- subDescription.setText(R.string.connection_not_connected);
- }
- }
-
- private void showToast(Activity activity, String message, boolean vibrateLong) {
- LayoutInflater inflater = getLayoutInflater();
- View layout = inflater.inflate(R.layout.custom_toast,
- activity.findViewById(R.id.custom_toast_container));
-
- AppCompatTextView text = layout.findViewById(R.id.text);
- text.setText(message);
-
- Vibrator v = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
- if (vibrateLong) {
- v.vibrate(100);
- v.vibrate(200);
- } else {
- v.vibrate(100);
- }
-
- Toast toast = new Toast(activity.getApplicationContext());
- toast.setGravity(Gravity.BOTTOM, 0, convertDimensionToPx(this.getContext(), R.dimen.stdpadding));
- toast.setDuration(Toast.LENGTH_LONG);
- toast.setView(layout);
- toast.show();
- }
-
- private void showRetryToast(Activity activity) {
- int nClosestGateway = gatewayOrder();
- String message = String.format("Server number " + nClosestGateway + " not reachable. Trying next gateway.");
- showToast(activity, message, true );
- }
-
- private void showConnectionTransitionLayout(boolean isConnecting) {
- mainButton.updateState(true, isConnecting, false);
- if (isConnecting) {
- colorBackgroundALittle();
- } else {
- greyscaleBackground();
- }
- }
-
- private boolean isOpenVpnRunningWithoutNetwork() {
- boolean isRunning = false;
- try {
- isRunning = eipStatus.getLevel() == LEVEL_NONETWORK &&
- mService.isVpnRunning();
- } catch (Exception e) {
- //eat me
- e.printStackTrace();
- }
-
- return isRunning;
- }
-
- private void greyscaleBackground() {
- if (BuildConfig.use_color_filter) {
- ColorMatrix matrix = new ColorMatrix();
- matrix.setSaturation(0);
- ColorMatrixColorFilter cf = new ColorMatrixColorFilter(matrix);
- background.setColorFilter(cf);
- background.setImageAlpha(255);
- }
- }
-
- private void colorBackgroundALittle() {
- if (BuildConfig.use_color_filter) {
- background.setColorFilter(null);
- background.setImageAlpha(144);
- }
- }
-
- private void colorBackground() {
- if (BuildConfig.use_color_filter) {
- background.setColorFilter(null);
- background.setImageAlpha(210);
- }
- }
-
- private void updateInvalidVpnCertificate() {
- eipStatus.setUpdatingVpnCert(true);
- ProviderAPICommand.execute(getContext(), UPDATE_INVALID_VPN_CERTIFICATE, provider);
- }
-
- private void askUserToLogIn(String userMessage) {
- Intent intent = new Intent(getContext(), LoginActivity.class);
- intent.putExtra(PROVIDER_KEY, provider);
-
- if(userMessage != null) {
- intent.putExtra(USER_MESSAGE, userMessage);
- }
-
- Activity activity = getActivity();
- if (activity != null) {
- activity.startActivityForResult(intent, REQUEST_CODE_LOG_IN);
- }
- }
-
- private class EipFragmentServiceConnection implements ServiceConnection {
- private final AtomicBoolean bind = new AtomicBoolean(false);
-
- void bindService() {
- Activity activity = getActivity();
- if (activity == null) {
- Log.e(TAG, "activity is null when binding OpenVpn");
- return;
- }
- if (!bind.get()) {
- activity.runOnUiThread(() -> {
- Intent intent = new Intent(activity, OpenVPNService.class);
- intent.setAction(OpenVPNService.START_SERVICE);
-
- activity.bindService(intent, EipFragmentServiceConnection.this, Context.BIND_AUTO_CREATE);
- bind.set(true);
- });
- }
- }
-
- void unbindService() {
- Activity activity = getActivity();
- if (activity == null) {
- return;
- }
- if (bind.get()) {
- activity.runOnUiThread(() -> {
- activity.unbindService(EipFragmentServiceConnection.this);
- bind.set(false);
- });
- }
- }
-
- @Override
- public void onServiceConnected(ComponentName className,
- IBinder service) {
- mService = IOpenVPNServiceInternal.Stub.asInterface(service);
- handleNewState();
- }
-
- @Override
- public void onServiceDisconnected(ComponentName arg0) {
- mService = null;
- }
- }
-
- public void showDonationReminderDialog() {
- try {
- FragmentTransaction fragmentTransaction = new FragmentManagerEnhanced(
- getActivity().getSupportFragmentManager()).removePreviousFragment(
- DonationReminderDialog.TAG);
- DialogFragment newFragment = new DonationReminderDialog();
- newFragment.setCancelable(false);
- newFragment.show(fragmentTransaction, DonationReminderDialog.TAG);
- } catch (IllegalStateException | NullPointerException e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/app/src/custom/java/se/leap/bitmaskclient/base/views/MainButton.java b/app/src/custom/java/se/leap/bitmaskclient/base/views/MainButton.java
deleted file mode 100644
index c5ac4544..00000000
--- a/app/src/custom/java/se/leap/bitmaskclient/base/views/MainButton.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package se.leap.bitmaskclient.base.views;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.AnimationDrawable;
-import android.util.AttributeSet;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.animation.AlphaAnimation;
-import android.view.animation.Animation;
-import android.widget.RelativeLayout;
-
-import androidx.annotation.ColorRes;
-import androidx.annotation.DrawableRes;
-import androidx.appcompat.widget.AppCompatImageView;
-import androidx.core.content.ContextCompat;
-
-import se.leap.bitmaskclient.R;
-
-public class MainButton extends RelativeLayout {
-
- private static final String TAG = MainButton.class.getSimpleName();
-
- AppCompatImageView glow;
- AppCompatImageView shadowLight;
- AnimationDrawable glowAnimation;
-
- private boolean isOn = false;
- private boolean isProcessing = false;
- private boolean isError = true;
-
-
- public MainButton(Context context) {
- super(context);
- initLayout(context);
- }
-
- public MainButton(Context context, AttributeSet attrs) {
- super(context, attrs);
- initLayout(context);
- }
-
- public MainButton(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- initLayout(context);
- }
-
-
- @TargetApi(21)
- public MainButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- initLayout(context);
- }
-
- private void initLayout(Context context) {
- LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View rootview = inflater.inflate(R.layout.v_main_btn, this, true);
-
- glow = rootview.findViewById(R.id.vpn_btn_glow);
- glowAnimation = (AnimationDrawable) glow.getBackground();
- shadowLight = rootview.findViewById(R.id.vpn_btn_shadow_light);
- }
-
-
- private void stopGlowAnimation() {
- AlphaAnimation fadeOutAnimation = new AlphaAnimation(1.0f, 0.0f);
- fadeOutAnimation.setDuration(300);
- fadeOutAnimation.setAnimationListener(new Animation.AnimationListener() {
- @Override
- public void onAnimationStart(Animation animation) {}
-
- @Override
- public void onAnimationEnd(Animation animation) {
- glow.setVisibility(GONE);
- glowAnimation.stop();
- }
-
- @Override
- public void onAnimationRepeat(Animation animation) {}
- });
- glow.startAnimation(fadeOutAnimation);
- }
-
- private void startGlowAnimation() {
- glow.setAlpha(1.0f);
- glow.setVisibility(VISIBLE);
- glowAnimation.start();
- }
-
- public void updateState(boolean isOn, boolean isProcessing, boolean isError) {
- if (this.isOn != isOn) {
- this.isOn = isOn;
- shadowLight.setVisibility(isOn ? VISIBLE : GONE);
- }
-
- if (this.isProcessing != isProcessing) {
- if (!isProcessing) {
- stopGlowAnimation();
- } else {
- startGlowAnimation();
- }
- this.isProcessing = isProcessing;
- }
-
- if (this.isError != isError) {
- @DrawableRes int drawableResource = isOn ? R.drawable.on_off_btn_start_2_enabled : R.drawable.on_off_btn_start_2_disabled;
- if (!isError) {
- setImageWithTint(shadowLight, drawableResource, R.color.colorMainBtnHighlight);
- } else {
- setImageWithTint(shadowLight, drawableResource, R.color.colorMainBtnError);
- }
- this.isError = isError;
- }
- }
-
- private void setImageWithTint(AppCompatImageView view, @DrawableRes int resourceId, @ColorRes int color) {
- view.setImageDrawable(ContextCompat.getDrawable(getContext(), resourceId));
- view.setColorFilter(ContextCompat.getColor(getContext(), color), PorterDuff.Mode.SRC_ATOP);
- }
-
-
-
-}
diff --git a/app/src/custom/res/animator/alpha2.xml b/app/src/custom/res/animator/alpha2.xml
new file mode 100644
index 00000000..bf997dea
--- /dev/null
+++ b/app/src/custom/res/animator/alpha2.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <objectAnimator
+ android:propertyName="fillAlpha"
+ android:valueFrom="0"
+ android:valueTo="1"
+ android:startOffset="200"
+ android:duration="250"
+ android:interpolator="@android:interpolator/linear" />
+</set> \ No newline at end of file
diff --git a/app/src/custom/res/animator/alpha3.xml b/app/src/custom/res/animator/alpha3.xml
new file mode 100644
index 00000000..d05f36c2
--- /dev/null
+++ b/app/src/custom/res/animator/alpha3.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+
+</set> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-ldpi/logo.png b/app/src/custom/res/drawable-ldpi/logo.png
deleted file mode 100644
index 4e22d99f..00000000
--- a/app/src/custom/res/drawable-ldpi/logo.png
+++ /dev/null
Binary files differ
diff --git a/app/src/custom/res/drawable-mdpi/logo.png b/app/src/custom/res/drawable-mdpi/logo.png
deleted file mode 100644
index e53cb15c..00000000
--- a/app/src/custom/res/drawable-mdpi/logo.png
+++ /dev/null
Binary files differ
diff --git a/app/src/custom/res/drawable-xxxhdpi/logo.png b/app/src/custom/res/drawable-xxxhdpi/logo.png
deleted file mode 100644
index 4297d90c..00000000
--- a/app/src/custom/res/drawable-xxxhdpi/logo.png
+++ /dev/null
Binary files differ
diff --git a/app/src/custom/res/drawable/background_eip.xml b/app/src/custom/res/drawable/background_eip.xml
deleted file mode 100644
index a2364794..00000000
--- a/app/src/custom/res/drawable/background_eip.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- *****************************************************
- Background image for the main vpn screem
- example: <item android:drawable="@drawable/mybackground" />
- *****************************************************
--->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/background_main" />
-</layer-list> \ No newline at end of file
diff --git a/app/src/custom/res/drawable/ravens3.xml b/app/src/custom/res/drawable/ravens.xml
index f97a3532..f97a3532 100644
--- a/app/src/custom/res/drawable/ravens3.xml
+++ b/app/src/custom/res/drawable/ravens.xml
diff --git a/app/src/custom/res/drawable/ravens1.xml b/app/src/custom/res/drawable/ravens1.xml
deleted file mode 100644
index d38b0c19..00000000
--- a/app/src/custom/res/drawable/ravens1.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
- android:viewportWidth="342"
- android:viewportHeight="206"
- android:width="342dp"
- android:height="206dp">
- <group
- android:scaleX="0.8"
- android:scaleY="0.8"
- android:translateX="-224.2934"
- android:translateY="11.72371">
- <path
- android:pathData="M385.13834 197.43106c-0.72897 -1.36208 -0.61597 -2.15071 0.51401 -3.58724l1.0109 -1.28515 -2.7045 -3.53096c-1.67306 -2.18432 -3.16903 -3.64755 -3.92253 -3.83667 -0.78962 -0.19818 -1.46242 -0.8906 -1.91284 -1.96862 -0.78944 -1.88939 -0.68998 -1.87306 -7.21616 -1.18532 -3.17774 0.33487 -5.21281 0.85767 -7.44 1.9113 -3.28857 1.55574 -5.44061 1.80404 -6.78577 0.78292 -1.02537 -0.77836 -1.06491 -1.42761 -0.13401 -2.20019 0.38829 -0.32225 0.65829 -1.03611 0.6 -1.58634 -0.0805 -0.75951 0.24078 -1.07485 1.33401 -1.3095 0.792 -0.17 1.87322 -0.54195 2.40272 -0.82656 0.66764 -0.35886 1.7028 -0.37114 3.37723 -0.0401 3.1702 0.62683 7.16506 -0.46946 9.11061 -2.50018 0.98579 -1.02893 1.81957 -1.42897 2.97837 -1.42897 0.88512 0 2.4561 -0.432 3.49107 -0.96 1.03497 -0.528 2.21436 -0.96 2.62088 -0.96 0.40651 0 0.73912 -0.30839 0.73912 -0.68532 0 -0.54071 -0.53763 -0.62982 -2.54805 -0.42233 -3.2514 0.33557 -4.17195 -0.44353 -4.17195 -3.53092 0 -1.44319 -0.32154 -2.57878 -0.96 -3.39045 -0.528 -0.67124 -0.96 -1.49047 -0.96 -1.8205 0 -0.33004 -0.54 -0.95389 -1.2 -1.38634 -0.7646 -0.50098 -1.2 -1.23373 -1.2 -2.01949 0 -0.67827 -0.432 -1.78243 -0.96 -2.45367 -0.528 -0.67124 -0.96 -1.5865 -0.96 -2.03391 0 -0.44741 -1.15388 -2.09228 -2.56419 -3.65527 -2.97648 -3.29873 -3.67581 -4.47263 -3.67581 -6.17024 0 -1.04577 -0.21517 -1.23156 -1.42631 -1.23156 -0.78448 0 -2.67448 -0.56194 -4.2 -1.24877 -3.87341 -1.74389 -9.21645 -3.55123 -10.49851 -3.55123 -1.57962 0 -2.59518 -0.491 -2.59518 -1.2547 0 -0.53914 0.68803 -0.61839 3.48 -0.40086 3.2635 0.25428 3.40535 0.22572 2.28 -0.45912 -0.66 -0.40165 -2.226 -0.87399 -3.48 -1.04964 -2.96604 -0.41545 -2.93747 -1.15568 0.0446 -1.15568 1.92868 0 9.64234 2.10373 13.15539 3.58785 0.50332 0.21263 0.84 0.14513 0.84 -0.16841 0 -0.28779 -1.13158 -1.09668 -2.51463 -1.79753 -2.92533 -1.48238 -12.13912 -7.58751 -12.61637 -8.35971 -1.35099 -2.18595 3.01241 -0.0675 12.14639 5.89721 3.24247 2.1174 6.04388 3.70133 6.22536 3.51984 0.18149 -0.18148 -0.38708 -0.89116 -1.26349 -1.57704 -2.20209 -1.7234 -10.13726 -10.73208 -10.13726 -11.50869 0 -1.14242 0.85579 -0.66795 2.72266 1.5095 2.27855 2.65762 9.24491 8.66726 13.01433 11.22703 2.8929 1.96453 11.64578 6.78995 12.31636 6.78995 0.20542 0 0.23167 -0.756 0.0583 -1.68 -0.22647 -1.20719 -0.14019 -1.69436 0.30658 -1.73102 0.34197 -0.0281 1.03481 -0.0821 1.53965 -0.12 1.86068 -0.13982 1.16626 -1.06327 -1.60872 -2.13929 -1.56874 -0.6083 -3.78307 -1.85532 -4.92072 -2.77115 -1.13765 -0.91584 -3.09446 -2.43544 -4.34846 -3.37688 -4.34658 -3.2632 -1.75366 -4.17202 3.18156 -1.11514 2.26983 1.40594 3.91431 1.53202 1.97844 0.15169 -6.31808 -4.50497 -6.96 -5.05256 -6.96 -5.93721 0 -0.52855 0.11494 -0.961 0.25542 -0.961 0.78964 0 4.15067 1.74166 8.39825 4.35188 2.65524 1.63171 4.93892 2.85554 5.07483 2.71963 0.13591 -0.13592 -1.94842 -2.37661 -4.63184 -4.97931 -5.53891 -5.37229 -7.03228 -7.22857 -6.35791 -7.90295 0.56718 -0.56718 1.61175 0.22173 8.939 6.7512 3.12276 2.78275 5.93076 5.14466 6.24 5.24868 0.30924 0.10402 -1.50978 -1.95528 -4.04226 -4.57623 -4.62994 -4.79166 -7.54368 -8.5847 -7.00693 -9.12146 0.15897 -0.15897 2.25393 1.41143 4.65545 3.48976 4.14801 3.58979 5.79244 4.76276 5.09498 3.63424 -0.17306 -0.28001 -0.11466 -0.6327 0.12976 -0.78376 0.64416 -0.39811 17.86024 17.63295 19.07981 19.98301 1.60753 3.09765 1.75025 5.81492 0.61158 11.64343 -0.65753 3.36572 -0.90221 5.90827 -0.699 7.26344 0.29317 1.95498 0.42327 2.10307 2.08577 2.37409 0.9752 0.15898 2.42109 0.39924 3.21309 0.5339 5.1256 0.87155 13.65736 4.80211 12.94067 5.96174 -0.15253 0.24679 -1.93858 0.44985 -3.969 0.45124 -3.88293 0.003 -3.90932 0.0128 -8.39867 3.23101 -1.6107 1.15463 -3.37986 1.81494 -6.89008 2.5716 -4.81503 1.03793 -7.97908 2.51326 -12.88292 6.00704 -4.80978 3.42677 -4.95621 3.84823 -2.4 6.90782 2.66507 3.18989 2.14762 5.66217 -1.51355 7.23153 -2.68358 1.15032 -2.89394 1.15032 -3.50956 0.00003zm4.78311 -5.20219c0 -0.57904 -2.89719 -3.94937 -3.39495 -3.94937 -0.77051 0 -0.49203 0.68428 1.0299 2.53064 1.38291 1.67772 2.36505 2.26687 2.36505 1.41873z"
- android:fillColor="#000000" />
- </group>
-
-</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable/ravens2.xml b/app/src/custom/res/drawable/ravens2.xml
deleted file mode 100644
index 0a3cbb7e..00000000
--- a/app/src/custom/res/drawable/ravens2.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
- android:viewportWidth="342"
- android:viewportHeight="206"
- android:width="342dp"
- android:height="206dp">
- <group
- android:scaleX="0.8"
- android:scaleY="0.8"
- android:translateX="-224.2934"
- android:translateY="11.72371">
- <path
- android:pathData="M385.13834 197.43106c-0.72897 -1.36208 -0.61597 -2.15071 0.51401 -3.58724l1.0109 -1.28515 -2.7045 -3.53096c-1.67306 -2.18432 -3.16903 -3.64755 -3.92253 -3.83667 -0.78962 -0.19818 -1.46242 -0.8906 -1.91284 -1.96862 -0.78944 -1.88939 -0.68998 -1.87306 -7.21616 -1.18532 -3.17774 0.33487 -5.21281 0.85767 -7.44 1.9113 -3.28857 1.55574 -5.44061 1.80404 -6.78577 0.78292 -1.02537 -0.77836 -1.06491 -1.42761 -0.13401 -2.20019 0.38829 -0.32225 0.65829 -1.03611 0.6 -1.58634 -0.0805 -0.75951 0.24078 -1.07485 1.33401 -1.3095 0.792 -0.17 1.87322 -0.54195 2.40272 -0.82656 0.66764 -0.35886 1.7028 -0.37114 3.37723 -0.0401 3.1702 0.62683 7.16506 -0.46946 9.11061 -2.50018 0.98579 -1.02893 1.81957 -1.42897 2.97837 -1.42897 0.88512 0 2.4561 -0.432 3.49107 -0.96 1.03497 -0.528 2.21436 -0.96 2.62088 -0.96 0.40651 0 0.73912 -0.30839 0.73912 -0.68532 0 -0.54071 -0.53763 -0.62982 -2.54805 -0.42233 -3.2514 0.33557 -4.17195 -0.44353 -4.17195 -3.53092 0 -1.44319 -0.32154 -2.57878 -0.96 -3.39045 -0.528 -0.67124 -0.96 -1.49047 -0.96 -1.8205 0 -0.33004 -0.54 -0.95389 -1.2 -1.38634 -0.7646 -0.50098 -1.2 -1.23373 -1.2 -2.01949 0 -0.67827 -0.432 -1.78243 -0.96 -2.45367 -0.528 -0.67124 -0.96 -1.5865 -0.96 -2.03391 0 -0.44741 -1.15388 -2.09228 -2.56419 -3.65527 -2.97648 -3.29873 -3.67581 -4.47263 -3.67581 -6.17024 0 -1.04577 -0.21517 -1.23156 -1.42631 -1.23156 -0.78448 0 -2.67448 -0.56194 -4.2 -1.24877 -3.87341 -1.74389 -9.21645 -3.55123 -10.49851 -3.55123 -1.57962 0 -2.59518 -0.491 -2.59518 -1.2547 0 -0.53914 0.68803 -0.61839 3.48 -0.40086 3.2635 0.25428 3.40535 0.22572 2.28 -0.45912 -0.66 -0.40165 -2.226 -0.87399 -3.48 -1.04964 -2.96604 -0.41545 -2.93747 -1.15568 0.0446 -1.15568 1.92868 0 9.64234 2.10373 13.15539 3.58785 0.50332 0.21263 0.84 0.14513 0.84 -0.16841 0 -0.28779 -1.13158 -1.09668 -2.51463 -1.79753 -2.92533 -1.48238 -12.13912 -7.58751 -12.61637 -8.35971 -1.35099 -2.18595 3.01241 -0.0675 12.14639 5.89721 3.24247 2.1174 6.04388 3.70133 6.22536 3.51984 0.18149 -0.18148 -0.38708 -0.89116 -1.26349 -1.57704 -2.20209 -1.7234 -10.13726 -10.73208 -10.13726 -11.50869 0 -1.14242 0.85579 -0.66795 2.72266 1.5095 2.27855 2.65762 9.24491 8.66726 13.01433 11.22703 2.8929 1.96453 11.64578 6.78995 12.31636 6.78995 0.20542 0 0.23167 -0.756 0.0583 -1.68 -0.22647 -1.20719 -0.14019 -1.69436 0.30658 -1.73102 0.34197 -0.0281 1.03481 -0.0821 1.53965 -0.12 1.86068 -0.13982 1.16626 -1.06327 -1.60872 -2.13929 -1.56874 -0.6083 -3.78307 -1.85532 -4.92072 -2.77115 -1.13765 -0.91584 -3.09446 -2.43544 -4.34846 -3.37688 -4.34658 -3.2632 -1.75366 -4.17202 3.18156 -1.11514 2.26983 1.40594 3.91431 1.53202 1.97844 0.15169 -6.31808 -4.50497 -6.96 -5.05256 -6.96 -5.93721 0 -0.52855 0.11494 -0.961 0.25542 -0.961 0.78964 0 4.15067 1.74166 8.39825 4.35188 2.65524 1.63171 4.93892 2.85554 5.07483 2.71963 0.13591 -0.13592 -1.94842 -2.37661 -4.63184 -4.97931 -5.53891 -5.37229 -7.03228 -7.22857 -6.35791 -7.90295 0.56718 -0.56718 1.61175 0.22173 8.939 6.7512 3.12276 2.78275 5.93076 5.14466 6.24 5.24868 0.30924 0.10402 -1.50978 -1.95528 -4.04226 -4.57623 -4.62994 -4.79166 -7.54368 -8.5847 -7.00693 -9.12146 0.15897 -0.15897 2.25393 1.41143 4.65545 3.48976 4.14801 3.58979 5.79244 4.76276 5.09498 3.63424 -0.17306 -0.28001 -0.11466 -0.6327 0.12976 -0.78376 0.64416 -0.39811 17.86024 17.63295 19.07981 19.98301 1.60753 3.09765 1.75025 5.81492 0.61158 11.64343 -0.65753 3.36572 -0.90221 5.90827 -0.699 7.26344 0.29317 1.95498 0.42327 2.10307 2.08577 2.37409 0.9752 0.15898 2.42109 0.39924 3.21309 0.5339 5.1256 0.87155 13.65736 4.80211 12.94067 5.96174 -0.15253 0.24679 -1.93858 0.44985 -3.969 0.45124 -3.88293 0.003 -3.90932 0.0128 -8.39867 3.23101 -1.6107 1.15463 -3.37986 1.81494 -6.89008 2.5716 -4.81503 1.03793 -7.97908 2.51326 -12.88292 6.00704 -4.80978 3.42677 -4.95621 3.84823 -2.4 6.90782 2.66507 3.18989 2.14762 5.66217 -1.51355 7.23153 -2.68358 1.15032 -2.89394 1.15032 -3.50956 0.00003zm4.78311 -5.20219c0 -0.57904 -2.89719 -3.94937 -3.39495 -3.94937 -0.77051 0 -0.49203 0.68428 1.0299 2.53064 1.38291 1.67772 2.36505 2.26687 2.36505 1.41873z"
- android:fillColor="#000000" />
- </group>
- <group
- android:scaleX="0.8"
- android:scaleY="0.8"
- android:translateX="-14.21506"
- android:translateY="22.70211">
- <path
- android:pathData="M242.17687 151.65225c-1.74028 -2.28162 -2.178 -4.03768 -2.178 -8.73776 0 -2.17974 -0.18432 -3.96317 -0.4096 -3.96317 -0.22529 0 -0.71129 2.81516 -1.08 6.25591 -0.36872 3.44074 -0.8864 6.28072 -1.1504 6.31105 -1.04841 0.12049 -2.28619 -3.10071 -2.57984 -6.71376l-0.30016 -3.6932 -1.07056 1.81145c-2.08936 3.5353 -3.47008 2.84679 -3.48209 -1.73638 -0.006 -2.37601 -0.1508 -2.84246 -0.94546 -3.05027 -0.61539 -0.16092 -1.21919 -1.09153 -1.75512 -2.70506 -0.44935 -1.35286 -1.32319 -2.85792 -1.94188 -3.34458 -0.78894 -0.62057 -1.12489 -1.37616 -1.12489 -2.53 0 -2.06355 -0.60376 -2.09129 -1.85358 -0.0852 -1.18439 1.90109 -2.71192 2.89912 -3.87313 2.53057 -0.64166 -0.20366 -1.0246 0.1062 -1.47495 1.19345 -0.7302 1.76286 -2.63143 3.35598 -4.00504 3.35598 -0.54848 0 -1.46581 0.58765 -2.03851 1.30588 -0.89827 1.12654 -1.14794 1.21735 -1.81803 0.66123 -0.42722 -0.35456 -0.77543 -1.32021 -0.7738 -2.14588 0.003 -1.54988 0.31834 -2.30174 2.59201 -6.18123 2.37785 -4.05724 0.51183 -2.41446 -2.48575 2.18836 -3.12365 4.79641 -4.09991 5.87182 -4.88819 5.38464 -1.17655 -0.72715 -0.0446 -4.77763 2.18334 -7.813 1.22554 -1.66965 0.0938 -1.27585 -1.72437 0.6 -2.65534 2.73963 -4.34104 1.74204 -2.45575 -1.4533 0.93339 -1.58198 0.94531 -1.72299 0.1698 -2.00903 -1.26447 -0.4664 -1.46738 -1.03369 -1.04291 -2.91573 0.30278 -1.34248 0.21909 -1.84412 -0.38085 -2.28281 -0.75536 -0.55233 -0.9059 -1.41732 -1.24948 -7.17913 -0.20592 -3.45317 -1.35998 -10.32002 -1.73441 -10.31993 -0.14652 0.00003 -3.1824 0.88931 -6.7464 1.97616 -3.564 1.08684 -6.8656 2.086 -7.33688 2.22033 -0.47128 0.13433 -2.09128 -0.15192 -3.6 -0.63611 -1.50872 -0.48419 -3.01312 -0.8259 -3.34312 -0.75935 -1.2262 0.24726 -0.53956 -1.304 1.32139 -2.98524 1.05676 -0.95472 2.08554 -1.73586 2.28617 -1.73586 0.20064 0 0.57802 -0.486 0.83862 -1.08 0.54254 -1.23661 2.67944 -1.701199 8.15382 -1.772749 5.57725 -0.0729 9.57243 -1.17346 13.90516 -3.83049 4.52997 -2.77799 15.85234 -6.751008 22.57484 -7.921507 2.65339 -0.462 7.19029 -0.754493 11.76 -0.758165 7.33879 -0.0059 7.50857 0.01795 12.48 1.754669 4.64388 1.622275 7.89361 3.607435 7.55725 4.616496 -0.0759 0.227717 -1.8631 0.454018 -3.97155 0.502891 -3.40039 0.07882 -4.27825 0.305799 -7.76936 2.008856 -2.16469 1.056 -3.93825 2.136 -3.94123 2.4 -0.003 0.264 0.9368 1.1895 2.0884 2.056649 1.1516 0.86716 2.32074 2.16316 2.59809 2.88 0.61481 1.58903 2.47015 14.53738 2.49976 17.44571 0.0373 3.66931 1.70932 11.11002 3.22173 14.33764 1.81937 3.88271 1.28959 4.93466 -1.08652 2.15745 -0.90229 -1.05459 -1.64863 -1.65817 -1.65854 -1.34126 -0.0271 0.86542 3.28286 9.82211 4.07847 11.03636 0.38106 0.58156 0.50275 1.17487 0.27043 1.31845 -0.59625 0.3685 -3.42187 -2.90311 -4.8461 -5.611 -0.65955 -1.254 -1.36566 -2.28 -1.56915 -2.28 -0.40909 0 -0.35407 0.31827 1.09899 6.35685 1.05557 4.3867 0.95137 5.67912 -0.36978 4.58646 -0.90254 -0.74644 -2.98958 -5.08951 -2.9962 -6.23498 -0.002 -0.44642 -0.2554 -0.96662 -0.56182 -1.156 -0.41664 -0.2575 -0.47655 0.88529 -0.23759 4.53167 0.18049 2.75413 0.13441 4.876 -0.1059 4.876 -0.23399 0 -1.00861 -0.76458 -1.72138 -1.69907z"
- android:fillColor="#000000" />
- </group>
-</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable/rotate_progress_image.xml b/app/src/custom/res/drawable/rotate_progress_image.xml
new file mode 100644
index 00000000..f84f9034
--- /dev/null
+++ b/app/src/custom/res/drawable/rotate_progress_image.xml
@@ -0,0 +1,14 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:name="circle"
+ android:viewportWidth="91"
+ android:viewportHeight="91"
+ android:width="91dp"
+ android:height="91dp">
+ <path
+ android:pathData="M0 0"
+ android:fillColor="#00000000" />
+ <!--
+ Implement your progress animation vector graphic here.
+ The graphic will rotate behind the cancel button in EipFragment.
+ -->
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable/state_connecting.xml b/app/src/custom/res/drawable/state_connecting.xml
new file mode 100644
index 00000000..3ef89983
--- /dev/null
+++ b/app/src/custom/res/drawable/state_connecting.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+
+</selector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable/crow.xml b/app/src/custom/res/drawable/state_disconnected.xml
index 3d3660b8..3d3660b8 100644
--- a/app/src/custom/res/drawable/crow.xml
+++ b/app/src/custom/res/drawable/state_disconnected.xml
diff --git a/app/src/custom/res/layout-port/f_eip.xml b/app/src/custom/res/layout-port/f_eip.xml
deleted file mode 100644
index cb99a700..00000000
--- a/app/src/custom/res/layout-port/f_eip.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/eipServiceFragment"
- tools:viewBindingIgnore="true"
- >
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_left"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.225"
- />
-
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_bottom"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintGuide_percent="0.66"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_right"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.775"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="fitXY"
- app:srcCompat="@drawable/background_eip" />
-
- <se.leap.bitmaskclient.base.views.MainButton
- android:id="@+id/main_button"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="@dimen/stdpadding"
- app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_bottom"
- app:layout_constraintDimensionRatio="1:1"
- app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
- app:layout_constraintStart_toStartOf="@+id/guideline_vertical_left"
- app:layout_constraintTop_toTopOf="parent"
- />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/main_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/main_button"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/sub_description"
- android:padding="@dimen/activity_margin"
- android:textAppearance="@android:style/TextAppearance.Large"
- android:textSize="26sp"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- app:layout_constraintDimensionRatio="1:1"
- tools:text="Connection secure"
- android:gravity="center"
- android:maxLines="1"
- />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/sub_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/main_description"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/gateway_location_button"
- android:padding="@dimen/activity_margin"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- app:layout_constraintDimensionRatio="1:1"
- tools:text="A LONG TEXT WITH SEVERAL THINGS BLABLkk \n kdjfkj \n kjdfkjdf"
- android:gravity="center"
- android:maxLines="3"
- android:ellipsize="end"
- />
-
- <se.leap.bitmaskclient.base.views.LocationButton
- android:id="@+id/gateway_location_button"
- android:layout_width="match_parent"
- android:layout_height="64dp"
- android:layout_marginBottom="@dimen/stdpadding"
- android:layout_marginEnd="@dimen/stdpadding"
- android:layout_marginStart="@dimen/stdpadding"
- android:layout_marginTop="@dimen/stdpadding"
- android:layout_marginLeft="@dimen/stdpadding"
- android:layout_marginRight="@dimen/stdpadding"
- app:layout_constraintBottom_toBottomOf="@+id/background"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- tools:text="SEATTLE"
- android:gravity="center_vertical" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/custom/res/layout-xlarge-port/f_eip.xml b/app/src/custom/res/layout-xlarge-port/f_eip.xml
deleted file mode 100644
index 10b7a7e3..00000000
--- a/app/src/custom/res/layout-xlarge-port/f_eip.xml
+++ /dev/null
@@ -1,122 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/eipServiceFragment"
- tools:viewBindingIgnore="true"
- >
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_top"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.0"
- app:layout_constraintRight_toRightOf="parent" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_left"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.2"
- />
-
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_bottom"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintGuide_percent="0.7"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_right"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.8"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="fitXY"
- app:srcCompat="@drawable/background_eip" />
-
-
- <se.leap.bitmaskclient.base.views.MainButton
- android:id="@+id/main_button"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="@dimen/stdpadding"
- app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_bottom"
- app:layout_constraintDimensionRatio="1:1"
- app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
- app:layout_constraintStart_toStartOf="@+id/guideline_vertical_left"
- app:layout_constraintTop_toTopOf="@+id/guideline_horizontal_top"
- app:layout_constraintVertical_bias="0.425" />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/main_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/main_button"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/sub_description"
- android:padding="@dimen/activity_margin"
- android:textAppearance="@android:style/TextAppearance.Large"
- android:textSize="45sp"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- app:layout_constraintDimensionRatio="1:1"
- tools:text="Connection Secure"
- android:gravity="center"
- android:maxLines="1"
- />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/sub_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/main_description"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/gateway_location_button"
- android:padding="@dimen/activity_margin"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- app:layout_constraintDimensionRatio="1:1"
- tools:text="A LONG TEXT WITH SEVERAL THINGS BLABLkk"
- android:gravity="center"
- android:maxLines="2"
- android:ellipsize="end"
- />
-
- <se.leap.bitmaskclient.base.views.LocationButton
- android:id="@+id/gateway_location_button"
- android:layout_width="match_parent"
- android:layout_height="64dp"
- android:layout_marginBottom="@dimen/stdpadding"
- android:layout_marginEnd="@dimen/stdpadding"
- android:layout_marginStart="@dimen/stdpadding"
- android:layout_marginTop="@dimen/stdpadding"
- android:layout_marginLeft="@dimen/stdpadding"
- android:layout_marginRight="@dimen/stdpadding"
- app:layout_constraintBottom_toBottomOf="@+id/background"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- tools:text="SEATTLE"
- android:gravity="center_vertical" />
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/custom/res/layout-xlarge/f_eip.xml b/app/src/custom/res/layout-xlarge/f_eip.xml
deleted file mode 100644
index e6b28c67..00000000
--- a/app/src/custom/res/layout-xlarge/f_eip.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- This is the layout for extra large landscape, extra large portrait
- can be found in layout-xlarge-port
--->
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:id="@+id/eipServiceFragment"
- tools:viewBindingIgnore="true"
- >
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_top"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintGuide_percent="0.0"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_left"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.2"
- />
-
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_bottom"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintGuide_percent="0.66"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_right"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.8"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="fitXY"
- app:srcCompat="@drawable/background_eip" />
-
-
- <se.leap.bitmaskclient.base.views.MainButton
- android:id="@+id/main_button"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="@dimen/stdpadding"
- app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_bottom"
- app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
- app:layout_constraintStart_toStartOf="@+id/guideline_vertical_left"
- app:layout_constraintTop_toTopOf="@+id/guideline_horizontal_top"
- app:layout_constraintDimensionRatio="1:1" />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/main_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/guideline_horizontal_bottom"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/sub_description"
- android:padding="@dimen/stdpadding"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
- android:textSize="45sp"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- app:layout_constraintDimensionRatio="1:1"
- tools:text="CONNETION SECURE"
- android:maxLines="1"
- />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/sub_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/main_description"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/gateway_location_button"
- android:padding="@dimen/stdpadding"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- app:layout_constraintDimensionRatio="1:1"
- android:maxLines="5"
- android:ellipsize="end"
- tools:text="Your traffic is securly routed through"
- android:gravity="center"
-
- />
-
- <se.leap.bitmaskclient.base.views.LocationButton
- android:id="@+id/gateway_location_button"
- android:layout_width="match_parent"
- android:layout_height="64dp"
- android:layout_marginBottom="@dimen/stdpadding"
- android:layout_marginEnd="@dimen/stdpadding"
- android:layout_marginStart="@dimen/stdpadding"
- android:layout_marginTop="@dimen/stdpadding"
- android:layout_marginLeft="@dimen/stdpadding"
- android:layout_marginRight="@dimen/stdpadding"
- app:layout_constraintBottom_toBottomOf="@+id/background"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- tools:text="SEATTLE"
- android:gravity="center_vertical" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/custom/res/layout/f_eip.xml b/app/src/custom/res/layout/f_eip.xml
deleted file mode 100644
index 9a823b65..00000000
--- a/app/src/custom/res/layout/f_eip.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- This is the default layout for landscape, portrait can be found
- in layout-port
--->
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/eipServiceFragment"
- tools:viewBindingIgnore="true"
- >
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_top"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.1"
- app:layout_constraintRight_toRightOf="parent" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_left"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.3" />
-
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_bottom"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.55"
- app:layout_constraintRight_toRightOf="parent" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_button_top"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.8"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_button_bottom"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.98"
- app:layout_constraintRight_toRightOf="parent" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_right"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.7" />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:scaleType="fitXY"
- app:srcCompat="@drawable/background_eip" />
-
-
- <se.leap.bitmaskclient.base.views.MainButton
- android:id="@+id/main_button"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:layout_margin="@dimen/stdpadding"
- app:layout_constraintTop_toBottomOf="@id/guideline_horizontal_top"
- app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_bottom"
- app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
- app:layout_constraintStart_toStartOf="@+id/guideline_vertical_left"
- app:layout_constraintDimensionRatio="1:1"
- />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/main_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/guideline_horizontal_bottom"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/sub_description"
- android:paddingLeft="@dimen/stdpadding"
- android:paddingStart="@dimen/stdpadding"
- android:paddingRight="@dimen/stdpadding"
- android:paddingEnd="@dimen/stdpadding"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
- android:textSize="26sp"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- app:layout_constraintDimensionRatio="1:1"
- tools:text="Connection secure"
- />
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/sub_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toBottomOf="@id/main_description"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/gateway_location_button"
- android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
- android:textStyle="bold"
- android:textColor="@color/colorEipFragmentFont"
- android:paddingLeft="@dimen/stdpadding"
- android:paddingStart="@dimen/stdpadding"
- android:paddingRight="@dimen/stdpadding"
- android:paddingEnd="@dimen/stdpadding"
- android:paddingBottom="@dimen/stdpadding"
- app:layout_constraintDimensionRatio="1:1"
- tools:text="Your traffic is securly routed through \n another"
- android:maxLines="2"
- android:gravity="center"
- />
-
- <se.leap.bitmaskclient.base.views.LocationButton
- android:id="@+id/gateway_location_button"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_marginEnd="@dimen/stdpadding"
- android:layout_marginStart="@dimen/stdpadding"
-
- android:layout_marginLeft="@dimen/stdpadding"
- android:layout_marginRight="@dimen/stdpadding"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@id/guideline_horizontal_button_top"
- app:layout_constraintBottom_toBottomOf="@+id/guideline_horizontal_button_bottom"
- tools:text="SEATTLE"
- android:gravity="center_vertical" />
-
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/custom/res/layout/v_location_button.xml b/app/src/custom/res/layout/v_location_button.xml
deleted file mode 100644
index 8aaf4978..00000000
--- a/app/src/custom/res/layout/v_location_button.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_gravity="center_vertical"
- android:layout_height="match_parent"
- android:padding="@dimen/stdpadding"
- android:background="@drawable/cust_button_light_rect"
- >
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/world_icn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignTop="@+id/text_location"
- android:layout_alignBottom="@+id/text_location"
- android:scaleType="fitCenter"
- android:src="@drawable/ic_web"
- android:layout_gravity="center"
- app:tint="@color/colorLocationButtonTint"
- />
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/recommended_icn"
- android:scaleType="fitCenter"
- android:layout_marginRight="-13dp"
- android:layout_marginEnd="-13dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignTop="@id/text_location"
- android:layout_alignBottom="@+id/text_location"
- android:layout_toEndOf="@id/world_icn"
- android:layout_toRightOf="@id/world_icn"
- android:src="@drawable/ic_lightning_bolt"
- app:tint="@color/colorLocationButtonTint"
-
- android:visibility="gone"
- tools:visibility="visible"
- />
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/text_location"
- android:paddingStart="@dimen/stdpadding"
- android:paddingLeft="@dimen/stdpadding"
- android:paddingEnd="@dimen/stdpadding"
- android:paddingRight="@dimen/stdpadding"
- android:maxLines="1"
- android:ellipsize="end"
- android:layout_height="match_parent"
- android:layout_width="match_parent"
- app:autoSizeTextType="uniform"
- android:gravity="center_vertical"
- app:autoSizeMinTextSize="15sp"
- app:autoSizeMaxTextSize="24sp"
- android:layout_toEndOf="@id/recommended_icn"
- android:layout_toRightOf="@+id/recommended_icn"
- android:layout_toLeftOf="@+id/bridge_icn"
- android:layout_toStartOf="@+id/bridge_icn"
- android:layout_gravity="center_vertical"
- android:layout_centerInParent="true"
- android:textAppearance="@style/TextAppearance.AppCompat.Large"
- android:textStyle="bold"
- android:textColor="@color/white"
- tools:text="Seattle along message"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/bridge_icn"
-
- android:paddingStart="@dimen/compact_padding"
- android:paddingLeft="@dimen/compact_padding"
- android:paddingRight="@dimen/compact_padding"
- android:paddingEnd="@dimen/compact_padding"
- android:scaleType="fitCenter"
- android:layout_width="48dp"
- android:layout_height="wrap_content"
- android:layout_alignTop="@id/text_location"
- android:layout_alignBottom="@+id/text_location"
- android:layout_toStartOf="@id/load_indicator"
- android:layout_toLeftOf="@id/load_indicator"
- android:src="@drawable/ic_bridge_36"
- android:visibility="gone"
- tools:visibility="visible"
- app:tint="@color/colorLocationButtonTint"
- />
-
- <se.leap.bitmaskclient.base.views.LocationIndicator
- android:id="@+id/load_indicator"
- android:layout_marginBottom="4dp"
- android:layout_width="48dp"
- android:layout_height="40dp"
- android:layout_alignParentEnd="true"
- android:layout_alignParentRight="true"
- android:layout_centerVertical="true"
- android:paddingTop="@dimen/stdpadding"
- android:paddingBottom="@dimen/stdpadding"
- android:visibility="visible"
- android:layout_gravity="center_vertical"
- app:tint="@color/colorLocationButtonTintTransparent"
- />
-
-
-
-</RelativeLayout> \ No newline at end of file
diff --git a/app/src/custom/res/layout/v_main_button.xml b/app/src/custom/res/layout/v_main_button.xml
deleted file mode 100644
index e3f96693..00000000
--- a/app/src/custom/res/layout/v_main_button.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools">
-
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/vpn_btn_guideline_left"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.125" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/vpn_btn_guideline_right"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.875" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/vpn_btn_guideline_top"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.125" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/vpn_btn_guideline_bottom"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.875" />
-
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/icn_guideline_left"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.2" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/icn_guideline_right"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.8" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/icn_guideline_top"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.2" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/icn_guideline_bottom"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.8" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/border_guideline_left"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.025" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/border_guideline_right"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.975" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/border_guideline_top"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.025" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/border_guideline_bottom"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.975" />
-
-
- <!-- <ProgressBar
- android:id="@+id/progressBar"
- style="@style/Widget.AppCompat.ProgressBar.Horizontal"
-
- android:layout_width="0dp"
- android:layout_height="0dp"
- app:layout_constraintBottom_toBottomOf="@id/border_guideline_bottom"
- app:layout_constraintEnd_toEndOf="@id/border_guideline_right"
- app:layout_constraintStart_toStartOf="@id/border_guideline_left"
- app:layout_constraintTop_toTopOf="@id/border_guideline_top"
- app:layout_constraintDimensionRatio="1:1"
- android:indeterminate="true"
- android:indeterminateDuration="800"
- android:indeterminateDrawable="@drawable/progressbar_circle"
- android:interpolator="@android:anim/decelerate_interpolator"
- android:indeterminateBehavior="cycle"
- />-->
-
- <!--<androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/progress_circular"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:scaleType="fitXY"
-
- app:layout_constraintTop_toTopOf="@+id/button"
- app:layout_constraintBottom_toBottomOf="@+id/button"
- app:layout_constraintLeft_toLeftOf="@+id/button"
- app:layout_constraintRight_toRightOf="@+id/button"
- app:layout_constraintDimensionRatio="1:1"
- android:src="@drawable/rainbow_circle" />-->
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/button"
- android:layout_width="0dp"
- android:layout_height="0dp"
- app:layout_constraintBottom_toTopOf="@+id/vpn_btn_guideline_bottom"
- app:layout_constraintEnd_toStartOf="@+id/vpn_btn_guideline_right"
- app:layout_constraintStart_toStartOf="@+id/vpn_btn_guideline_left"
- app:layout_constraintTop_toTopOf="@+id/vpn_btn_guideline_top"
- app:layout_constraintDimensionRatio="1:1"
- app:srcCompat="@drawable/button_circle_start"
- />
-
-
-
-
-
-</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file