summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyberta <cyberta@riseup.net>2022-12-06 05:22:58 +0000
committercyberta <cyberta@riseup.net>2022-12-06 05:22:58 +0000
commit64427ae7fa3b6ff14d484efd3dc513744a615945 (patch)
tree3ac508716ac0210603f32f80baf07881c80b3ab1
parentc0d1a28e5d737fbf24e13ade9fd6988a07ee2719 (diff)
parent4c6f49fe5ec695541be06322a1cf227e2d6d083d (diff)
Merge branch 'main_ui_riseupvpn' into 'master'
new UI for RiseupVPN See merge request leap/bitmask_android!219
-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/alpha1.xml11
-rw-r--r--app/src/custom/res/animator/alpha2.xml12
-rw-r--r--app/src/custom/res/animator/alpha3.xml11
-rw-r--r--app/src/custom/res/animator/alpha4.xml10
-rw-r--r--app/src/custom/res/animator/state_transition_connceted_disconnected.xml4
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/bg_connected.xml13
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/bg_connected_effect.xml25
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/bg_connecting.xml13
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/bg_connecting_effect.xml44
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/bg_disconnected.xml15
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/bg_disconnected_effect.xml45
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/ic_motd.xml18
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/ravens.xml (renamed from app/src/custom/res/drawable/ravens3.xml)14
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/rotate_progress_image.xml (renamed from app/src/main/res/drawable/rotate_progress_image.xml)12
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/state_connected.xml27
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/state_connecting.xml18
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/state_disconnected.xml17
-rw-r--r--app/src/custom/res/drawable-anydpi-v24/state_transition_connected_disconnected.xml89
-rw-r--r--app/src/custom/res/drawable-hdpi/bg_connected.pngbin0 -> 61315 bytes
-rw-r--r--app/src/custom/res/drawable-hdpi/bg_connecting.pngbin0 -> 137369 bytes
-rw-r--r--app/src/custom/res/drawable-hdpi/bg_disconnected.pngbin0 -> 116565 bytes
-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-xhdpi/bg_connected.pngbin0 -> 85060 bytes
-rw-r--r--app/src/custom/res/drawable-xhdpi/bg_connecting.pngbin0 -> 230677 bytes
-rw-r--r--app/src/custom/res/drawable-xhdpi/bg_disconnected.pngbin0 -> 164266 bytes
-rw-r--r--app/src/custom/res/drawable-xxhdpi/bg_connected.pngbin0 -> 136989 bytes
-rw-r--r--app/src/custom/res/drawable-xxhdpi/bg_connecting.pngbin0 -> 422556 bytes
-rw-r--r--app/src/custom/res/drawable-xxhdpi/bg_disconnected.pngbin0 -> 258953 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/bg_connected.pngbin0 -> 39210 bytes
-rw-r--r--app/src/custom/res/drawable/bg_connecting.pngbin0 -> 68160 bytes
-rw-r--r--app/src/custom/res/drawable/bg_disconnected.pngbin0 -> 71570 bytes
-rw-r--r--app/src/custom/res/drawable/crow.xml9
-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.pngbin0 -> 161 bytes
-rw-r--r--app/src/custom/res/drawable/splash_branding.xml47
-rw-r--r--app/src/custom/res/drawable/splash_icon.xml17
-rw-r--r--app/src/custom/res/drawable/splash_page.xml10
-rw-r--r--app/src/custom/res/drawable/state_connected.pngbin0 -> 48758 bytes
-rw-r--r--app/src/custom/res/drawable/state_connecting.pngbin0 -> 111663 bytes
-rw-r--r--app/src/custom/res/drawable/state_disconnected.xml6
-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/values/custom-theme.xml9
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java (renamed from app/src/normal/java/se.leap.bitmaskclient.base.fragments/EipFragment.java)93
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/views/LocationButton.java5
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/base/views/MainButton.java (renamed from app/src/normal/java/se/leap/bitmaskclient/base/views/MainButton.java)0
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java3
-rw-r--r--app/src/main/res/color/main_button_state_color.xml5
-rw-r--r--app/src/main/res/drawable-anydpi-v24/ic_btn_cancel.xml9
-rw-r--r--app/src/main/res/drawable-anydpi-v24/ic_btn_on.xml10
-rw-r--r--app/src/main/res/drawable-hdpi/bg_connected.pngbin190405 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/bg_connecting.pngbin236571 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/bg_disconnected.pngbin143331 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_btn_cancel.pngbin486 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-hdpi/ic_btn_on.pngbin1091 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/bg_connected.pngbin319429 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/bg_connecting.pngbin400307 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/bg_disconnected.pngbin220676 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_btn_cancel.pngbin617 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xhdpi/ic_btn_on.pngbin1460 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/bg_connected.pngbin701727 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/bg_connecting.pngbin828368 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/bg_disconnected.pngbin446155 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/bg_switchbar.xml9
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_btn_cancel.pngbin1009 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxhdpi/ic_btn_on.pngbin2211 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/bg_connected.pngbin1228810 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/bg_connecting.pngbin1489207 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/bg_disconnected.pngbin745847 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_btn_cancel.pngbin1361 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-xxxhdpi/ic_btn_on.pngbin3115 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/bg_connected.pngbin90299 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/bg_connecting.pngbin112042 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/bg_disconnected.pngbin143331 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/button_circle_cancel_pressed.xml6
-rw-r--r--app/src/main/res/drawable/button_circle_cancel_released.xml19
-rw-r--r--app/src/main/res/drawable/button_circle_start_pressed.xml5
-rw-r--r--app/src/main/res/drawable/button_circle_start_released.xml10
-rw-r--r--app/src/main/res/drawable/button_circle_stop_pressed.xml5
-rw-r--r--app/src/main/res/drawable/button_circle_stop_released.xml11
-rw-r--r--app/src/main/res/drawable/footer_text_drawable.xml2
-rw-r--r--app/src/main/res/drawable/ic_btn_cancel.pngbin338 -> 1009 bytes
-rw-r--r--app/src/main/res/drawable/ic_btn_on.pngbin777 -> 2211 bytes
-rw-r--r--app/src/main/res/drawable/ic_btn_on_connecting.xml22
-rw-r--r--app/src/main/res/drawable/ic_btn_on_disabled.xml20
-rw-r--r--app/src/main/res/drawable/ic_btn_on_primary_color.xml22
-rw-r--r--app/src/main/res/drawable/logo.pngbin0 -> 18877 bytes
-rw-r--r--app/src/main/res/drawable/main_btn_glow.xml12
-rw-r--r--app/src/main/res/drawable/main_btn_shadow.xml5
-rw-r--r--app/src/main/res/drawable/on_off_btn_an1.pngbin16186 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_an2.pngbin12771 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_an3.pngbin10006 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_an4.pngbin9308 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_fill.pngbin41384 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_start_2_disabled.pngbin33323 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_start_2_enabled.pngbin31261 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_start_2_no_shadow.pngbin20182 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/on_off_btn_start_2_pressed.pngbin28721 -> 0 bytes
-rw-r--r--app/src/main/res/drawable/progressbar_circle.xml24
-rw-r--r--app/src/main/res/layout-port/f_eip.xml (renamed from app/src/normal/res/layout-port/f_eip.xml)12
-rw-r--r--app/src/main/res/layout-xlarge-port/f_eip.xml (renamed from app/src/normal/res/layout-xlarge/f_eip.xml)8
-rw-r--r--app/src/main/res/layout-xlarge/f_eip.xml (renamed from app/src/custom/res/layout/f_eip.xml)76
-rw-r--r--app/src/main/res/layout/allowed_application_layout.xml1
-rw-r--r--app/src/main/res/layout/f_eip.xml (renamed from app/src/normal/res/layout/f_eip.xml)9
-rw-r--r--app/src/main/res/layout/v_location_button.xml35
-rw-r--r--app/src/main/res/layout/v_main_btn.xml55
-rw-r--r--app/src/main/res/layout/v_main_button.xml (renamed from app/src/normal/res/layout/v_main_button.xml)32
-rw-r--r--app/src/main/res/values-v31/themes.xml8
-rw-r--r--app/src/main/res/values/colors.xml11
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/background_main.xml (renamed from app/src/normal/res/drawable/background_main.xml)0
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/bg_connected.xml14
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/bg_connected_effect.xml44
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/bg_connecting.xml13
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/bg_connecting_effect.xml44
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/bg_disconnected.xml13
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/bg_disconnected_effect.xml33
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/rotate_progress_image.xml (renamed from app/src/normal/res/drawable/rotate_progress_image.xml)0
-rw-r--r--app/src/normal/res/drawable-anydpi-v24/splash_icon.xml14
-rw-r--r--app/src/normal/res/drawable-hdpi/bg_connected.pngbin0 -> 101464 bytes
-rw-r--r--app/src/normal/res/drawable-hdpi/bg_connecting.pngbin0 -> 137369 bytes
-rw-r--r--app/src/normal/res/drawable-hdpi/bg_disconnected.pngbin0 -> 59922 bytes
-rw-r--r--app/src/normal/res/drawable-hdpi/rotate_progress_image.pngbin0 -> 6427 bytes
-rw-r--r--app/src/normal/res/drawable-hdpi/state_connected.png (renamed from app/src/main/res/drawable-hdpi/green_mask.png)bin81235 -> 81235 bytes
-rw-r--r--app/src/normal/res/drawable-hdpi/state_connecting.png (renamed from app/src/main/res/drawable-hdpi/yellow_mask.png)bin80386 -> 80386 bytes
-rw-r--r--app/src/normal/res/drawable-hdpi/state_disconnected.png (renamed from app/src/main/res/drawable-hdpi/red_mask.png)bin73514 -> 73514 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/background_main.png (renamed from app/src/normal/res/drawable-xhdpi/ic_splash_background.png)bin64868 -> 64868 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/bg_connected.pngbin0 -> 168784 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/bg_connecting.pngbin0 -> 230677 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/bg_disconnected.pngbin0 -> 79223 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/rotate_progress_image.pngbin0 -> 9736 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/state_connected.png (renamed from app/src/main/res/drawable-xhdpi/green_mask.png)bin121655 -> 121655 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/state_connecting.png (renamed from app/src/main/res/drawable-xhdpi/yellow_mask.png)bin122701 -> 122701 bytes
-rw-r--r--app/src/normal/res/drawable-xhdpi/state_disconnected.png (renamed from app/src/main/res/drawable-xhdpi/red_mask.png)bin116193 -> 116193 bytes
-rw-r--r--app/src/normal/res/drawable-xxhdpi/rotate_progress_image.pngbin0 -> 12752 bytes
-rw-r--r--app/src/normal/res/drawable-xxhdpi/state_connected.png (renamed from app/src/main/res/drawable-xxhdpi/green_mask.png)bin220730 -> 220730 bytes
-rw-r--r--app/src/normal/res/drawable-xxhdpi/state_connecting.png (renamed from app/src/main/res/drawable-xxhdpi/yellow_mask.png)bin226345 -> 226345 bytes
-rw-r--r--app/src/normal/res/drawable-xxhdpi/state_disconnected.png (renamed from app/src/main/res/drawable-xxhdpi/red_mask.png)bin222370 -> 222370 bytes
-rw-r--r--app/src/normal/res/drawable-xxxhdpi/background_main.png (renamed from app/src/normal/res/drawable-xxxhdpi/ic_splash_background.png)bin131879 -> 131879 bytes
-rw-r--r--app/src/normal/res/drawable-xxxhdpi/state_connected.png (renamed from app/src/main/res/drawable-xxxhdpi/green_mask.png)bin324196 -> 324196 bytes
-rw-r--r--app/src/normal/res/drawable-xxxhdpi/state_connecting.png (renamed from app/src/main/res/drawable-xxxhdpi/yellow_mask.png)bin334967 -> 334967 bytes
-rw-r--r--app/src/normal/res/drawable-xxxhdpi/state_disconnected.png (renamed from app/src/main/res/drawable-xxxhdpi/red_mask.png)bin362086 -> 362086 bytes
-rw-r--r--app/src/normal/res/drawable/background_eip.xml52
-rw-r--r--app/src/normal/res/drawable/background_main.png (renamed from app/src/normal/res/drawable-hdpi/ic_splash_background.png)bin39702 -> 39702 bytes
-rw-r--r--app/src/normal/res/drawable/bg_connected.pngbin0 -> 50250 bytes
-rw-r--r--app/src/normal/res/drawable/bg_connecting.pngbin0 -> 68160 bytes
-rw-r--r--app/src/normal/res/drawable/bg_disconnected.pngbin0 -> 59917 bytes
-rw-r--r--app/src/normal/res/drawable/ic_splash_background.xml4
-rw-r--r--app/src/normal/res/drawable/rotate_progress_image.pngbin0 -> 4945 bytes
-rw-r--r--app/src/normal/res/drawable/splash_branding.xml3
-rw-r--r--app/src/normal/res/drawable/state_connected.png (renamed from app/src/main/res/drawable/green_mask.png)bin47593 -> 47593 bytes
-rw-r--r--app/src/normal/res/drawable/state_connecting.png (renamed from app/src/main/res/drawable/yellow_mask.png)bin47055 -> 47055 bytes
-rw-r--r--app/src/normal/res/drawable/state_disconnected.png (renamed from app/src/main/res/drawable/red_mask.png)bin40172 -> 40172 bytes
-rw-r--r--app/src/normal/res/drawable/state_transition_connected_disconnected.pngbin0 -> 40172 bytes
-rw-r--r--app/src/normal/res/layout-xlarge-port/f_eip.xml162
-rw-r--r--app/src/normal/res/layout/v_location_button.xml104
-rw-r--r--app/src/normal/res/values-v31/themes.xml8
164 files changed, 869 insertions, 1904 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/alpha1.xml b/app/src/custom/res/animator/alpha1.xml
new file mode 100644
index 00000000..94192a0b
--- /dev/null
+++ b/app/src/custom/res/animator/alpha1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="fillColor"
+ android:valueFrom="#00000000"
+ android:valueTo="#000000"
+ android:valueType="colorType"
+ />
+</set>
+
diff --git a/app/src/custom/res/animator/alpha2.xml b/app/src/custom/res/animator/alpha2.xml
new file mode 100644
index 00000000..b66ef59c
--- /dev/null
+++ b/app/src/custom/res/animator/alpha2.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="fillColor"
+ android:valueFrom="#00000000"
+ android:valueTo="#000000"
+ android:startOffset="1000"
+ android:valueType="colorType"
+ />
+</set>
+
diff --git a/app/src/custom/res/animator/alpha3.xml b/app/src/custom/res/animator/alpha3.xml
new file mode 100644
index 00000000..2a1e0ba4
--- /dev/null
+++ b/app/src/custom/res/animator/alpha3.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android">
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="fillColor"
+ android:valueFrom="#00000000"
+ android:valueTo="#000000"
+ android:valueType="colorType"
+ android:startOffset="2000"
+ />
+</set>
diff --git a/app/src/custom/res/animator/alpha4.xml b/app/src/custom/res/animator/alpha4.xml
new file mode 100644
index 00000000..75dc9c78
--- /dev/null
+++ b/app/src/custom/res/animator/alpha4.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="alpha"
+ android:duration="1000"
+ android:startOffset="4000"
+ android:valueFrom="1"
+ android:valueTo="0" />
+</set>
+
diff --git a/app/src/custom/res/animator/state_transition_connceted_disconnected.xml b/app/src/custom/res/animator/state_transition_connceted_disconnected.xml
new file mode 100644
index 00000000..751d2da5
--- /dev/null
+++ b/app/src/custom/res/animator/state_transition_connceted_disconnected.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-anydpi-v24/bg_connected.xml b/app/src/custom/res/drawable-anydpi-v24/bg_connected.xml
new file mode 100644
index 00000000..f851203d
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/bg_connected.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:gravity="fill">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/bg_running"/>
+ </shape>
+ </item>
+ <item android:gravity="fill"
+ android:bottom="80dp"
+ android:drawable="@drawable/bg_connected_effect"
+ >
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/bg_connected_effect.xml b/app/src/custom/res/drawable-anydpi-v24/bg_connected_effect.xml
new file mode 100644
index 00000000..75e79573
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/bg_connected_effect.xml
@@ -0,0 +1,25 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="375"
+ android:viewportHeight="622"
+ android:width="375dp"
+ android:height="622dp">
+ <path
+ android:pathData="M185.501 621.837C315.565 621.837 421.003 346.305 421.003 6.4184C421.003 -333.468 315.565 -609 185.501 -609C55.4376 -609 -50 -333.468 -50 6.4184C-50 346.305 55.4376 621.837 185.501 621.837Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="289.514"
+ android:startY="184.89"
+ android:endX="289.514"
+ android:endY="564.398"
+ android:tileMode="clamp">
+ <item
+ android:color="#00A6C28A"
+ android:offset="0" />
+ <item
+ android:color="#36669933"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/bg_connecting.xml b/app/src/custom/res/drawable-anydpi-v24/bg_connecting.xml
new file mode 100644
index 00000000..8482d30e
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/bg_connecting.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:gravity="fill">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/bg_connecting"/>
+ </shape>
+ </item>
+ <item android:gravity="fill"
+ android:bottom="80dp"
+ android:drawable="@drawable/bg_connecting_effect"
+ >
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/bg_connecting_effect.xml b/app/src/custom/res/drawable-anydpi-v24/bg_connecting_effect.xml
new file mode 100644
index 00000000..fd462a54
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/bg_connecting_effect.xml
@@ -0,0 +1,44 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="375"
+ android:viewportHeight="629"
+ android:width="375dp"
+ android:height="629dp">
+ <path
+ android:pathData="M96.6338 471.305C226.719 515.286 420.512 289.654 529.484 -32.658C638.456 -354.97 621.341 -651.909 491.256 -695.89C361.172 -739.871 167.378 -514.239 58.4058 -191.927C-50.5662 130.385 -33.4509 427.324 96.6338 471.305Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="132.695"
+ android:startY="21.7787"
+ android:endX="11.0197"
+ android:endY="381.664"
+ android:tileMode="clamp">
+ <item
+ android:color="#00FFAA33"
+ android:offset="0" />
+ <item
+ android:color="#33FFAA33"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ <path
+ android:pathData="M183.501 628.837C313.565 628.837 419.003 353.304 419.003 13.4182C419.003 -326.468 313.565 -602 183.501 -602C53.4376 -602 -52 -326.468 -52 13.4182C-52 353.304 53.4376 628.837 183.501 628.837Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="183.501"
+ android:startY="255.483"
+ android:endX="183.501"
+ android:endY="634.991"
+ android:tileMode="clamp">
+ <item
+ android:color="#00FFAA33"
+ android:offset="0" />
+ <item
+ android:color="#33FFAA33"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/bg_disconnected.xml b/app/src/custom/res/drawable-anydpi-v24/bg_disconnected.xml
new file mode 100644
index 00000000..bfc3c1d1
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/bg_disconnected.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:gravity="fill">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/bg_disconnected"/>
+ </shape>
+ </item>
+ <item
+ android:top="-40dp"
+ android:gravity="fill"
+ android:drawable="@drawable/bg_disconnected_effect"
+ android:bottom="80dp"
+ >
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/bg_disconnected_effect.xml b/app/src/custom/res/drawable-anydpi-v24/bg_disconnected_effect.xml
new file mode 100644
index 00000000..d19c2f7f
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/bg_disconnected_effect.xml
@@ -0,0 +1,45 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="375"
+ android:viewportHeight="636"
+ android:width="375dp"
+ android:height="636dp"
+ >
+ <path
+ android:pathData="M183.528 635.43C313.591 635.43 419.029 359.898 419.029 20.0117C419.029 -319.875 313.591 -595.407 183.528 -595.407C53.4638 -595.407 -51.9738 -319.875 -51.9738 20.0117C-51.9738 359.898 53.4638 635.43 183.528 635.43Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="79.5145"
+ android:startY="198.483"
+ android:endX="79.5145"
+ android:endY="577.991"
+ android:tileMode="clamp">
+ <item
+ android:color="#00FFAA33"
+ android:offset="0" />
+ <item
+ android:color="#33AF0909"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ <path
+ android:pathData="M183.514 458.837C313.578 458.837 419.016 183.305 419.016 -156.582C419.016 -496.468 313.578 -772 183.514 -772C53.4506 -772 -51.9869 -496.468 -51.9869 -156.582C-51.9869 183.305 53.4506 458.837 183.514 458.837Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="183.514"
+ android:startY="85.483"
+ android:endX="183.514"
+ android:endY="464.991"
+ android:tileMode="clamp">
+ <item
+ android:color="#00FFAA33"
+ android:offset="0" />
+ <item
+ android:color="#33AF0909"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/ic_motd.xml b/app/src/custom/res/drawable-anydpi-v24/ic_motd.xml
new file mode 100644
index 00000000..85c9e58a
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/ic_motd.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="288"
+ android:viewportHeight="288"
+ android:width="288dp"
+ android:height="288dp">
+ <group
+ android:scaleX="1"
+ android:scaleY="1"
+ android:translateX="82"
+ android:translateY="52"
+ >
+ <path
+ android:pathData="M69.8243 44.3636C69.8243 44.3636 66.935 38.7879 66.6942 38.0606C66.4534 37.3333 65.0088 29.3333 65.0088 29.3333L66.935 25.9394L71.2689 19.6364L77.2882 14.7879L78.7328 14.303L93.42 8.72727L94.8647 7.27273L93.42 4.84849L91.2531 3.63636L87.4007 2.66666L77.7698 1.69697H70.3058L65.2496 2.90909L60.6749 1.21212L54.8963 0.484846L46.4692 0.242421L42.1353 0L35.1529 2.66666L24.3181 15.2727L22.8735 20.1212L22.1511 24.4848L18.5395 32.4848L16.1318 40L14.9279 48V49.697L9.39016 58.1818L6.26011 64.4848V73.4545L7.2232 92.1212L8.90861 98.9091L12.2794 105.212L16.6134 109.333L18.5395 117.333L25.7627 133.576L34.4306 144L34.9121 144.485L38.0422 160.242L27.4482 179.636L24.0773 182.303L21.6696 184.242H17.3357L14.9279 185.455L12.0387 185.697L10.3533 187.394L6.74165 186.909L3.13006 186.667L0.481548 188.606L0 192L1.92619 189.818L5.05624 188.848L5.29701 192L10.3533 190.303L13.2425 190.061L18.2988 190.788C18.2988 190.788 22.6327 190.545 23.355 190.303C24.0773 190.303 28.8928 190.788 28.8928 190.788L32.2636 190.303L34.1898 191.03L36.5975 190.303L39.246 191.515L43.0984 191.03L43.58 188.364L43.3392 186.909L45.9877 187.879L48.1547 189.576L49.5993 191.515V189.091L47.9139 186.182C47.9139 186.182 46.71 184.485 45.9877 184.727C45.2654 184.727 42.3761 184.242 42.3761 184.242L40.4499 184.97L38.283 184L36.116 185.212L34.1898 184.485L33.2267 182.545L31.7821 182.061L33.2267 178.182L36.5975 173.333L41.1722 165.576L45.2654 160.727L46.71 158.788C46.71 158.788 48.6362 155.879 48.6362 155.152C48.6362 154.424 49.1178 146.182 49.1178 146.182L46.71 140.848L45.5061 136.485L67.6573 141.818H68.8612L87.8823 155.636L90.5308 159.03L91.4938 172.848L91.0123 176L89.5677 178.424L88.6046 179.879L87.8823 182.061L87.4007 183.515L83.7891 184.727L80.1775 184L78.0106 183.758L73.9174 184.242L72.232 185.939L71.5097 188.121L71.9912 190.303L72.7135 188.121L73.9174 186.667L75.1213 186.424V188.364L76.5659 189.333L79.696 187.879L81.1406 187.636L81.6221 189.818H86.1968L89.3269 188.848L91.9754 189.333L95.8278 189.818L97.0316 189.333L97.9947 188.364L99.6801 191.758V187.879L97.9947 183.515L95.587 182.061L96.0686 180.848L94.3831 177.455L94.6239 164.849L104.255 176.242L117.016 186.182C117.016 186.182 125.684 189.333 126.406 189.333C127.128 189.333 133.148 188.606 133.148 188.606L137 182.303L134.111 173.576L135.315 170.667L129.295 162.667L116.293 149.333L113.163 138.909L113.404 131.879L110.515 124.364L107.385 118.788L109.311 112.727L107.866 104L101.366 89.2121L103.773 88.7273L99.4394 81.9394L102.088 81.2121L97.5132 73.697L99.4394 72.7273L96.0686 66.9091L97.2724 66.1818L92.9385 62.5455L94.3831 61.8182L83.5483 54.0606L69.8243 44.3636Z"
+ android:fillColor="#000000" />
+ </group>
+
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable/ravens3.xml b/app/src/custom/res/drawable-anydpi-v24/ravens.xml
index f97a3532..a4c3023d 100644
--- a/app/src/custom/res/drawable/ravens3.xml
+++ b/app/src/custom/res/drawable-anydpi-v24/ravens.xml
@@ -2,32 +2,40 @@
android:viewportWidth="342"
android:viewportHeight="206"
android:width="342dp"
+ android:name="ravens"
+ android:alpha="1"
android:height="206dp">
<group
+ android:name="raven1"
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="-224.2934"
android:translateY="11.72371">
<path
+ android:name="raven1path"
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" />
+ android:fillColor="#00000000" />
</group>
<group
+ android:name="raven3"
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="-77.92102"
android:translateY="-54.82651">
<path
+ android:name="raven3path"
android:pathData="M447.80204 216.9559c-0.72269 -0.39213 -1.64623 -1.35548 -2.05233 -2.14078 -0.92258 -1.78409 -1.47725 -1.82526 -1.45263 -0.10784 0.0256 1.78611 -1.56103 1.9993 -3.05379 0.41034 -0.92579 -0.98546 -1.26967 -1.09461 -2.00395 -0.63604 -0.71993 0.4496 -1.15887 0.3521 -2.33731 -0.51916 -1.20317 -0.88954 -1.60809 -0.97455 -2.37139 -0.49787 -0.73689 0.4602 -1.14575 0.42723 -2.0501 -0.16532 -0.64725 -0.42409 -1.74409 -0.64998 -2.56857 -0.52897 -1.09407 0.16058 -1.71749 -0.0853 -2.60113 -1.02589 -0.6392 -0.6804 -1.5772 -1.23709 -2.08445 -1.23709 -0.50725 0 -1.49559 -0.32252 -2.19633 -0.71671 -0.70073 -0.39419 -1.81406 -0.93368 -2.47406 -1.19885 -0.66 -0.26518 -1.524 -0.66225 -1.92 -0.88239 -2.1004 -1.1676 -3.9862 -2.00205 -4.5245 -2.00205 -0.33369 0 -0.99766 -0.432 -1.4755 -0.96 -0.47783 -0.528 -1.16856 -0.96 -1.53495 -0.96 -0.77161 0 -6.74173 -3.13454 -7.86284 -4.12828 -0.89689 -0.79501 -2.53748 -0.86858 -3.83877 -0.17215 -0.51341 0.27477 -1.88229 2.38077 -3.04196 4.68 -1.15968 2.29924 -2.72649 4.76604 -3.4818 5.48179 -1.40184 1.32842 -5.12659 2.93173 -5.63342 2.4249 -0.1543 -0.15429 -1.70398 -0.32663 -3.44374 -0.38296 -2.32752 -0.0754 -3.51734 -0.36424 -4.50361 -1.09342 -0.81562 -0.60301 -1.73721 -0.88722 -2.35394 -0.72594 -1.35459 0.35423 -3.92189 -0.18553 -5.09262 -1.0707 -0.66178 -0.50036 -0.98915 -1.4008 -1.08522 -2.98487 -0.0757 -1.2476 -0.25951 -4.04558 -0.40856 -6.21772 -0.25931 -3.77896 -0.21836 -3.99814 0.94896 -5.07999 1.35121 -1.25225 4.13171 -1.97137 10.61247 -2.74472 5.3395 -0.63715 6.25903 -0.85126 8.52 -1.98381 1.76578 -0.8845 2.45969 -2.32213 1.12084 -2.32213 -0.37355 0 -1.5596 -1.134 -2.63568 -2.52 -2.13022 -2.74373 -2.50653 -3.16958 -3.62217 -4.09893 -0.40864 -0.3404 -0.74299 -1.12556 -0.74299 -1.74479 0 -0.67126 -0.48454 -1.44336 -1.2 -1.91214 -0.66 -0.43245 -1.2 -1.23621 -1.2 -1.78612 0 -0.54992 -0.54 -1.42462 -1.2 -1.94378 -0.66 -0.51916 -1.2 -1.34367 -1.2 -1.83225 0 -0.48859 -0.54 -1.53009 -1.2 -2.31445 -0.66 -0.78437 -1.2 -1.85934 -1.2 -2.38883 0 -0.52949 -0.756 -1.71871 -1.68 -2.64271 -0.924 -0.924 -1.68 -2.09595 -1.68 -2.60433 0 -0.50838 -0.55232 -1.44321 -1.22738 -2.07739 -0.81219 -0.76302 -1.14213 -1.47902 -0.97538 -2.11669 0.17148 -0.65575 -0.2374 -1.46856 -1.27973 -2.54398 -1.31288 -1.35454 -1.4494 -1.71218 -0.95549 -2.50306 0.48388 -0.77482 0.38564 -1.14926 -0.61288 -2.33593 -1.29697 -1.54136 -1.48117 -2.47059 -0.65374 -3.29802 0.39386 -0.39386 0.19307 -0.98422 -0.75958 -2.2332 -0.88414 -1.15917 -1.19604 -2.00954 -0.98311 -2.68042 0.2246 -0.70765 -0.16728 -1.56735 -1.40042 -3.07223 -2.52054 -3.076 -2.28628 -3.69399 0.92771 -2.44729 0.528 0.20481 -0.498 -1.15368 -2.28 -3.01887 -2.97172 -3.11045 -3.98593 -4.92459 -2.75312 -4.92459 0.26778 0 2.38692 1.48253 4.7092 3.29452 6.33422 4.94234 8.3162 5.80749 3.95158 1.7249 -4.36141 -4.07959 -8.0677 -9.81942 -6.34054 -9.81942 0.28116 0 2.49842 2.05416 4.92723 4.5648 2.42882 2.51065 4.49954 4.48131 4.60161 4.37925 0.10205 -0.10206 -0.98133 -1.73668 -2.40752 -3.63249 -1.42619 -1.89581 -2.85494 -4.32096 -3.17499 -5.38921 -0.32005 -1.06825 -0.69762 -2.24379 -0.83904 -2.61231 -0.72243 -1.88264 1.03187 -0.1508 4.3051 4.24996 2.01269 2.706 4.67913 5.892 5.92543 7.08l2.266 2.16 -1.79464 -2.4c-2.2233 -2.97326 -4.5686 -7.73418 -4.94128 -10.03072 -0.44513 -2.74301 0.50313 -2.04466 2.37988 1.75269 1.66581 3.37055 8.26211 12.81454 9.47338 13.56314 0.32795 0.20269 0.50635 0.17645 0.39644 -0.0583 -0.1099 -0.23474 -1.00191 -2.04072 -1.98227 -4.01327 -0.98034 -1.97255 -1.78245 -3.86255 -1.78245 -4.2 0 -1.51072 0.98617 -0.31134 2.75157 3.34646 2.25366 4.66945 5.11203 8.56401 10.59899 14.44126 4.9305 5.28122 8.54604 10.06515 10.94256 14.47874 6.17495 11.37222 8.31949 13.01948 14.29789 10.98244 2.27587 -0.77547 3.24479 -0.75419 9.27398 0.20364 2.25404 0.35809 4.45501 1.59731 4.45501 2.50832 0 0.19008 -0.60035 0.46567 -1.3341 0.61242 -0.73377 0.14675 -1.86777 0.78823 -2.52 1.42549 -1.81377 1.77213 -5.26658 5.9971 -5.26039 6.43677 0.006 0.39975 0.80419 0.80728 7.34031 3.74603 4.42236 1.98837 8.73868 4.82625 10.41418 6.84709 2.22226 2.68029 9.70388 8.73695 12.42297 10.05689 2.10404 1.02137 2.46767 1.34537 1.65388 1.47363 -0.57373 0.0904 -1.97773 -0.30571 -3.12 -0.88029l-2.07685 -1.04469 1.3513 1.43507c0.74321 0.78928 2.79521 2.15598 4.56 3.03711 2.62921 1.31274 3.00331 1.63456 2.07139 1.78197 -0.62552 0.099 -2.40778 -0.44981 -3.96059 -1.21945 -2.26132 -1.12081 -2.65597 -1.21281 -1.9827 -0.4622 0.46233 0.51543 1.9746 1.57936 3.3606 2.36428 1.386 0.78492 2.52 1.65077 2.52 1.92411 0 0.83627 -3.35317 0.0235 -5.34728 -1.29618 -2.37621 -1.5725 -2.35309 -0.95606 0.0673 1.79363 2.28368 2.59439 2.44317 3.37594 0.6 2.94004 -1.49775 -0.3542 -4.44 -2.40221 -4.44 -3.09054 0 -0.25057 -0.23446 -0.45558 -0.52103 -0.45558 -0.28658 0 0.0374 0.99921 0.72 2.22046 0.68257 1.22125 1.24103 2.40925 1.24103 2.64 0 0.63619 -1.52046 0.46767 -2.99396 -0.33184z"
- android:fillColor="#000000" />
+ android:fillColor="#00000000" />
</group>
<group
+ android:name="raven2"
android:scaleX="0.8"
android:scaleY="0.8"
android:translateX="-14.21506"
android:translateY="22.70211">
<path
+ android:name="raven2path"
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" />
+ android:fillColor="#00000000" />
</group>
</vector> \ No newline at end of file
diff --git a/app/src/main/res/drawable/rotate_progress_image.xml b/app/src/custom/res/drawable-anydpi-v24/rotate_progress_image.xml
index 7b539720..f84f9034 100644
--- a/app/src/main/res/drawable/rotate_progress_image.xml
+++ b/app/src/custom/res/drawable-anydpi-v24/rotate_progress_image.xml
@@ -4,9 +4,11 @@
android:viewportHeight="91"
android:width="91dp"
android:height="91dp">
-
-<!--
- // implement your rotation animation vector image here
--->
-
+ <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-anydpi-v24/state_connected.xml b/app/src/custom/res/drawable-anydpi-v24/state_connected.xml
new file mode 100644
index 00000000..e0a9005f
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/state_connected.xml
@@ -0,0 +1,27 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="166"
+ android:viewportHeight="220"
+ android:width="166dp"
+ android:height="220dp">
+
+ <path
+ android:name="shield1"
+ android:pathData="M75.7916 211.927C37.7611 190.779 9.33369 157.386 2.89166 126.295C1.07036 117.505 0.998811 115.374 1.00089 69.9755L1.0025 26.6083L4.76437 24.1851C20.6619 13.9449 37.4788 7.09821 54.6105 3.64229C89.5868 -3.41322 125.875 3.66238 158.333 24.8539L161 26.5952V70.1783C161 115.754 160.927 117.944 159.119 126.65C152.713 157.49 128.092 187.572 91.7515 208.96C81.1937 215.174 81.5205 215.113 75.7916 211.927Z"
+ android:fillColor="#739B4C" />
+ <path
+ android:name="shield2"
+ android:pathData="M81.0089 1.00082C72.1811 0.99767 63.3554 1.87831 54.6114 3.64218C37.4796 7.09809 20.6622 13.9447 4.76468 24.185L1.00318 26.608L1.00002 69.9756C0.998421 115.374 1.06949 117.505 2.89058 126.295C9.3326 157.386 37.76 190.778 75.7905 211.927H75.7913C78.2626 213.301 79.6075 214.092 81.1849 214.051V1.00327C81.1259 1.00314 81.0673 1 81.008 1L81.0089 1.00082Z"
+ android:fillColor="#81A55D" />
+ <group
+ android:scaleX="0.65"
+ android:scaleY="0.65"
+ android:translateX="42"
+ android:translateY="30"
+ >
+ <path
+ android:pathData="M69.8243 44.3636C69.8243 44.3636 66.935 38.7879 66.6942 38.0606C66.4534 37.3333 65.0088 29.3333 65.0088 29.3333L66.935 25.9394L71.2689 19.6364L77.2882 14.7879L78.7328 14.303L93.42 8.72727L94.8647 7.27273L93.42 4.84849L91.2531 3.63636L87.4007 2.66666L77.7698 1.69697H70.3058L65.2496 2.90909L60.6749 1.21212L54.8963 0.484846L46.4692 0.242421L42.1353 0L35.1529 2.66666L24.3181 15.2727L22.8735 20.1212L22.1511 24.4848L18.5395 32.4848L16.1318 40L14.9279 48V49.697L9.39016 58.1818L6.26011 64.4848V73.4545L7.2232 92.1212L8.90861 98.9091L12.2794 105.212L16.6134 109.333L18.5395 117.333L25.7627 133.576L34.4306 144L34.9121 144.485L38.0422 160.242L27.4482 179.636L24.0773 182.303L21.6696 184.242H17.3357L14.9279 185.455L12.0387 185.697L10.3533 187.394L6.74165 186.909L3.13006 186.667L0.481548 188.606L0 192L1.92619 189.818L5.05624 188.848L5.29701 192L10.3533 190.303L13.2425 190.061L18.2988 190.788C18.2988 190.788 22.6327 190.545 23.355 190.303C24.0773 190.303 28.8928 190.788 28.8928 190.788L32.2636 190.303L34.1898 191.03L36.5975 190.303L39.246 191.515L43.0984 191.03L43.58 188.364L43.3392 186.909L45.9877 187.879L48.1547 189.576L49.5993 191.515V189.091L47.9139 186.182C47.9139 186.182 46.71 184.485 45.9877 184.727C45.2654 184.727 42.3761 184.242 42.3761 184.242L40.4499 184.97L38.283 184L36.116 185.212L34.1898 184.485L33.2267 182.545L31.7821 182.061L33.2267 178.182L36.5975 173.333L41.1722 165.576L45.2654 160.727L46.71 158.788C46.71 158.788 48.6362 155.879 48.6362 155.152C48.6362 154.424 49.1178 146.182 49.1178 146.182L46.71 140.848L45.5061 136.485L67.6573 141.818H68.8612L87.8823 155.636L90.5308 159.03L91.4938 172.848L91.0123 176L89.5677 178.424L88.6046 179.879L87.8823 182.061L87.4007 183.515L83.7891 184.727L80.1775 184L78.0106 183.758L73.9174 184.242L72.232 185.939L71.5097 188.121L71.9912 190.303L72.7135 188.121L73.9174 186.667L75.1213 186.424V188.364L76.5659 189.333L79.696 187.879L81.1406 187.636L81.6221 189.818H86.1968L89.3269 188.848L91.9754 189.333L95.8278 189.818L97.0316 189.333L97.9947 188.364L99.6801 191.758V187.879L97.9947 183.515L95.587 182.061L96.0686 180.848L94.3831 177.455L94.6239 164.849L104.255 176.242L117.016 186.182C117.016 186.182 125.684 189.333 126.406 189.333C127.128 189.333 133.148 188.606 133.148 188.606L137 182.303L134.111 173.576L135.315 170.667L129.295 162.667L116.293 149.333L113.163 138.909L113.404 131.879L110.515 124.364L107.385 118.788L109.311 112.727L107.866 104L101.366 89.2121L103.773 88.7273L99.4394 81.9394L102.088 81.2121L97.5132 73.697L99.4394 72.7273L96.0686 66.9091L97.2724 66.1818L92.9385 62.5455L94.3831 61.8182L83.5483 54.0606L69.8243 44.3636Z"
+ android:fillColor="#000000" />
+ </group>
+
+
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/state_connecting.xml b/app/src/custom/res/drawable-anydpi-v24/state_connecting.xml
new file mode 100644
index 00000000..77207966
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/state_connecting.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/ravens"
+ >
+ <target
+ android:animation="@animator/alpha4"
+ android:name="ravens" />
+ <target
+ android:animation="@animator/alpha1"
+ android:name="raven1path"/>
+ <target
+ android:animation="@animator/alpha2"
+ android:name="raven2path"/>
+ <target
+ android:animation="@animator/alpha3"
+ android:name="raven3path"/>
+
+</animated-vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/state_disconnected.xml b/app/src/custom/res/drawable-anydpi-v24/state_disconnected.xml
new file mode 100644
index 00000000..7c49a537
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/state_disconnected.xml
@@ -0,0 +1,17 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="166"
+ android:viewportHeight="220"
+ android:width="166dp"
+ android:height="220dp">
+ <group
+ android:scaleX="0.725"
+ android:scaleY="0.725"
+ android:translateX="36"
+ android:translateY="36"
+ >
+ <path
+ android:pathData="M69.8243 44.3636C69.8243 44.3636 66.935 38.7879 66.6942 38.0606C66.4534 37.3333 65.0088 29.3333 65.0088 29.3333L66.935 25.9394L71.2689 19.6364L77.2882 14.7879L78.7328 14.303L93.42 8.72727L94.8647 7.27273L93.42 4.84849L91.2531 3.63636L87.4007 2.66666L77.7698 1.69697H70.3058L65.2496 2.90909L60.6749 1.21212L54.8963 0.484846L46.4692 0.242421L42.1353 0L35.1529 2.66666L24.3181 15.2727L22.8735 20.1212L22.1511 24.4848L18.5395 32.4848L16.1318 40L14.9279 48V49.697L9.39016 58.1818L6.26011 64.4848V73.4545L7.2232 92.1212L8.90861 98.9091L12.2794 105.212L16.6134 109.333L18.5395 117.333L25.7627 133.576L34.4306 144L34.9121 144.485L38.0422 160.242L27.4482 179.636L24.0773 182.303L21.6696 184.242H17.3357L14.9279 185.455L12.0387 185.697L10.3533 187.394L6.74165 186.909L3.13006 186.667L0.481548 188.606L0 192L1.92619 189.818L5.05624 188.848L5.29701 192L10.3533 190.303L13.2425 190.061L18.2988 190.788C18.2988 190.788 22.6327 190.545 23.355 190.303C24.0773 190.303 28.8928 190.788 28.8928 190.788L32.2636 190.303L34.1898 191.03L36.5975 190.303L39.246 191.515L43.0984 191.03L43.58 188.364L43.3392 186.909L45.9877 187.879L48.1547 189.576L49.5993 191.515V189.091L47.9139 186.182C47.9139 186.182 46.71 184.485 45.9877 184.727C45.2654 184.727 42.3761 184.242 42.3761 184.242L40.4499 184.97L38.283 184L36.116 185.212L34.1898 184.485L33.2267 182.545L31.7821 182.061L33.2267 178.182L36.5975 173.333L41.1722 165.576L45.2654 160.727L46.71 158.788C46.71 158.788 48.6362 155.879 48.6362 155.152C48.6362 154.424 49.1178 146.182 49.1178 146.182L46.71 140.848L45.5061 136.485L67.6573 141.818H68.8612L87.8823 155.636L90.5308 159.03L91.4938 172.848L91.0123 176L89.5677 178.424L88.6046 179.879L87.8823 182.061L87.4007 183.515L83.7891 184.727L80.1775 184L78.0106 183.758L73.9174 184.242L72.232 185.939L71.5097 188.121L71.9912 190.303L72.7135 188.121L73.9174 186.667L75.1213 186.424V188.364L76.5659 189.333L79.696 187.879L81.1406 187.636L81.6221 189.818H86.1968L89.3269 188.848L91.9754 189.333L95.8278 189.818L97.0316 189.333L97.9947 188.364L99.6801 191.758V187.879L97.9947 183.515L95.587 182.061L96.0686 180.848L94.3831 177.455L94.6239 164.849L104.255 176.242L117.016 186.182C117.016 186.182 125.684 189.333 126.406 189.333C127.128 189.333 133.148 188.606 133.148 188.606L137 182.303L134.111 173.576L135.315 170.667L129.295 162.667L116.293 149.333L113.163 138.909L113.404 131.879L110.515 124.364L107.385 118.788L109.311 112.727L107.866 104L101.366 89.2121L103.773 88.7273L99.4394 81.9394L102.088 81.2121L97.5132 73.697L99.4394 72.7273L96.0686 66.9091L97.2724 66.1818L92.9385 62.5455L94.3831 61.8182L83.5483 54.0606L69.8243 44.3636Z"
+ android:fillColor="#000000" />
+ </group>
+
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable-anydpi-v24/state_transition_connected_disconnected.xml b/app/src/custom/res/drawable-anydpi-v24/state_transition_connected_disconnected.xml
new file mode 100644
index 00000000..0496e729
--- /dev/null
+++ b/app/src/custom/res/drawable-anydpi-v24/state_transition_connected_disconnected.xml
@@ -0,0 +1,89 @@
+<animated-vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt">
+ <aapt:attr name="android:drawable">
+ <vector
+ android:name="vector"
+ android:width="166dp"
+ android:height="220dp"
+ android:viewportWidth="166"
+ android:viewportHeight="220">
+ <path
+ android:name="shield1"
+ android:pathData="M 75.792 211.927 C 37.761 190.779 9.334 157.386 2.892 126.295 C 1.07 117.505 0.999 115.374 1.001 69.975 L 1.002 26.608 L 4.764 24.185 C 20.662 13.945 37.479 7.098 54.611 3.642 C 89.587 -3.413 125.875 3.662 158.333 24.854 L 161 26.595 L 161 70.178 C 161 115.754 160.927 117.944 159.119 126.65 C 152.713 157.49 128.092 187.572 91.751 208.96 C 81.194 215.174 81.52 215.113 75.792 211.927 Z"
+ android:fillColor="#739B4C"/>
+ <path
+ android:name="shield2"
+ android:pathData="M 81.009 1.001 C 72.181 0.998 63.355 1.878 54.611 3.642 C 37.48 7.098 20.662 13.945 4.765 24.185 L 1.003 26.608 L 1 69.976 C 0.998 115.374 1.069 117.505 2.891 126.295 C 9.333 157.386 37.76 190.778 75.79 211.927 L 75.791 211.927 C 78.263 213.301 79.608 214.092 81.185 214.051 L 81.185 1.003 C 81.126 1.003 81.067 1 81.008 1 L 81.009 1.001 Z"
+ android:fillColor="#81A55D"/>
+ <group
+ android:name="ravenGroup"
+ android:scaleX="0.65"
+ android:scaleY="0.65"
+ android:translateX="42"
+ android:translateY="30"
+ >
+ <path
+ android:pathData="M69.8243 44.3636C69.8243 44.3636 66.935 38.7879 66.6942 38.0606C66.4534 37.3333 65.0088 29.3333 65.0088 29.3333L66.935 25.9394L71.2689 19.6364L77.2882 14.7879L78.7328 14.303L93.42 8.72727L94.8647 7.27273L93.42 4.84849L91.2531 3.63636L87.4007 2.66666L77.7698 1.69697H70.3058L65.2496 2.90909L60.6749 1.21212L54.8963 0.484846L46.4692 0.242421L42.1353 0L35.1529 2.66666L24.3181 15.2727L22.8735 20.1212L22.1511 24.4848L18.5395 32.4848L16.1318 40L14.9279 48V49.697L9.39016 58.1818L6.26011 64.4848V73.4545L7.2232 92.1212L8.90861 98.9091L12.2794 105.212L16.6134 109.333L18.5395 117.333L25.7627 133.576L34.4306 144L34.9121 144.485L38.0422 160.242L27.4482 179.636L24.0773 182.303L21.6696 184.242H17.3357L14.9279 185.455L12.0387 185.697L10.3533 187.394L6.74165 186.909L3.13006 186.667L0.481548 188.606L0 192L1.92619 189.818L5.05624 188.848L5.29701 192L10.3533 190.303L13.2425 190.061L18.2988 190.788C18.2988 190.788 22.6327 190.545 23.355 190.303C24.0773 190.303 28.8928 190.788 28.8928 190.788L32.2636 190.303L34.1898 191.03L36.5975 190.303L39.246 191.515L43.0984 191.03L43.58 188.364L43.3392 186.909L45.9877 187.879L48.1547 189.576L49.5993 191.515V189.091L47.9139 186.182C47.9139 186.182 46.71 184.485 45.9877 184.727C45.2654 184.727 42.3761 184.242 42.3761 184.242L40.4499 184.97L38.283 184L36.116 185.212L34.1898 184.485L33.2267 182.545L31.7821 182.061L33.2267 178.182L36.5975 173.333L41.1722 165.576L45.2654 160.727L46.71 158.788C46.71 158.788 48.6362 155.879 48.6362 155.152C48.6362 154.424 49.1178 146.182 49.1178 146.182L46.71 140.848L45.5061 136.485L67.6573 141.818H68.8612L87.8823 155.636L90.5308 159.03L91.4938 172.848L91.0123 176L89.5677 178.424L88.6046 179.879L87.8823 182.061L87.4007 183.515L83.7891 184.727L80.1775 184L78.0106 183.758L73.9174 184.242L72.232 185.939L71.5097 188.121L71.9912 190.303L72.7135 188.121L73.9174 186.667L75.1213 186.424V188.364L76.5659 189.333L79.696 187.879L81.1406 187.636L81.6221 189.818H86.1968L89.3269 188.848L91.9754 189.333L95.8278 189.818L97.0316 189.333L97.9947 188.364L99.6801 191.758V187.879L97.9947 183.515L95.587 182.061L96.0686 180.848L94.3831 177.455L94.6239 164.849L104.255 176.242L117.016 186.182C117.016 186.182 125.684 189.333 126.406 189.333C127.128 189.333 133.148 188.606 133.148 188.606L137 182.303L134.111 173.576L135.315 170.667L129.295 162.667L116.293 149.333L113.163 138.909L113.404 131.879L110.515 124.364L107.385 118.788L109.311 112.727L107.866 104L101.366 89.2121L103.773 88.7273L99.4394 81.9394L102.088 81.2121L97.5132 73.697L99.4394 72.7273L96.0686 66.9091L97.2724 66.1818L92.9385 62.5455L94.3831 61.8182L83.5483 54.0606L69.8243 44.3636Z"
+ android:fillColor="#000000" />
+ </group>
+
+ </vector>
+ </aapt:attr>
+ <target android:name="shield1">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:propertyName="fillAlpha"
+ android:duration="300"
+ android:valueFrom="1"
+ android:valueTo="0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ </aapt:attr>
+ </target>
+ <target android:name="shield2">
+ <aapt:attr name="android:animation">
+ <objectAnimator
+ android:propertyName="fillAlpha"
+ android:duration="300"
+ android:valueFrom="1"
+ android:valueTo="0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ </aapt:attr>
+ </target>
+ <target android:name="ravenGroup">
+ <aapt:attr name="android:animation">
+ <set>
+ <objectAnimator
+ android:propertyName="scaleX"
+ android:duration="300"
+ android:valueFrom="0.65"
+ android:valueTo="0.725"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ <objectAnimator
+ android:propertyName="scaleY"
+ android:duration="300"
+ android:valueFrom="0.65"
+ android:valueTo="0.725"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ <objectAnimator
+ android:propertyName="translateX"
+ android:duration="300"
+ android:valueFrom="42"
+ android:valueTo="36"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ <objectAnimator
+ android:propertyName="translateY"
+ android:duration="300"
+ android:valueFrom="30"
+ android:valueTo="36"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in"/>
+ </set>
+ </aapt:attr>
+ </target>
+</animated-vector>
diff --git a/app/src/custom/res/drawable-hdpi/bg_connected.png b/app/src/custom/res/drawable-hdpi/bg_connected.png
new file mode 100644
index 00000000..aa29fd90
--- /dev/null
+++ b/app/src/custom/res/drawable-hdpi/bg_connected.png
Binary files differ
diff --git a/app/src/custom/res/drawable-hdpi/bg_connecting.png b/app/src/custom/res/drawable-hdpi/bg_connecting.png
new file mode 100644
index 00000000..49620c2c
--- /dev/null
+++ b/app/src/custom/res/drawable-hdpi/bg_connecting.png
Binary files differ
diff --git a/app/src/custom/res/drawable-hdpi/bg_disconnected.png b/app/src/custom/res/drawable-hdpi/bg_disconnected.png
new file mode 100644
index 00000000..35180222
--- /dev/null
+++ b/app/src/custom/res/drawable-hdpi/bg_disconnected.png
Binary files differ
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-xhdpi/bg_connected.png b/app/src/custom/res/drawable-xhdpi/bg_connected.png
new file mode 100644
index 00000000..f9588d56
--- /dev/null
+++ b/app/src/custom/res/drawable-xhdpi/bg_connected.png
Binary files differ
diff --git a/app/src/custom/res/drawable-xhdpi/bg_connecting.png b/app/src/custom/res/drawable-xhdpi/bg_connecting.png
new file mode 100644
index 00000000..294e4708
--- /dev/null
+++ b/app/src/custom/res/drawable-xhdpi/bg_connecting.png
Binary files differ
diff --git a/app/src/custom/res/drawable-xhdpi/bg_disconnected.png b/app/src/custom/res/drawable-xhdpi/bg_disconnected.png
new file mode 100644
index 00000000..d18bc78e
--- /dev/null
+++ b/app/src/custom/res/drawable-xhdpi/bg_disconnected.png
Binary files differ
diff --git a/app/src/custom/res/drawable-xxhdpi/bg_connected.png b/app/src/custom/res/drawable-xxhdpi/bg_connected.png
new file mode 100644
index 00000000..14c58b03
--- /dev/null
+++ b/app/src/custom/res/drawable-xxhdpi/bg_connected.png
Binary files differ
diff --git a/app/src/custom/res/drawable-xxhdpi/bg_connecting.png b/app/src/custom/res/drawable-xxhdpi/bg_connecting.png
new file mode 100644
index 00000000..062e84c4
--- /dev/null
+++ b/app/src/custom/res/drawable-xxhdpi/bg_connecting.png
Binary files differ
diff --git a/app/src/custom/res/drawable-xxhdpi/bg_disconnected.png b/app/src/custom/res/drawable-xxhdpi/bg_disconnected.png
new file mode 100644
index 00000000..cd014703
--- /dev/null
+++ b/app/src/custom/res/drawable-xxhdpi/bg_disconnected.png
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/bg_connected.png b/app/src/custom/res/drawable/bg_connected.png
new file mode 100644
index 00000000..78a09cae
--- /dev/null
+++ b/app/src/custom/res/drawable/bg_connected.png
Binary files differ
diff --git a/app/src/custom/res/drawable/bg_connecting.png b/app/src/custom/res/drawable/bg_connecting.png
new file mode 100644
index 00000000..d85ddd4b
--- /dev/null
+++ b/app/src/custom/res/drawable/bg_connecting.png
Binary files differ
diff --git a/app/src/custom/res/drawable/bg_disconnected.png b/app/src/custom/res/drawable/bg_disconnected.png
new file mode 100644
index 00000000..029c5d5a
--- /dev/null
+++ b/app/src/custom/res/drawable/bg_disconnected.png
Binary files differ
diff --git a/app/src/custom/res/drawable/crow.xml b/app/src/custom/res/drawable/crow.xml
deleted file mode 100644
index 3d3660b8..00000000
--- a/app/src/custom/res/drawable/crow.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
- android:viewportWidth="137"
- android:viewportHeight="192"
- android:width="137dp"
- android:height="192dp">
- <path
- android:pathData="M69.8243 44.3636C69.8243 44.3636 66.935 38.7879 66.6942 38.0606C66.4534 37.3333 65.0088 29.3333 65.0088 29.3333L66.935 25.9394L71.2689 19.6364L77.2882 14.7879L78.7328 14.303L93.42 8.72727L94.8647 7.27273L93.42 4.84849L91.2531 3.63636L87.4007 2.66666L77.7698 1.69697H70.3058L65.2496 2.90909L60.6749 1.21212L54.8963 0.484846L46.4692 0.242421L42.1353 0L35.1529 2.66666L24.3181 15.2727L22.8735 20.1212L22.1511 24.4848L18.5395 32.4848L16.1318 40L14.9279 48V49.697L9.39016 58.1818L6.26011 64.4848V73.4545L7.2232 92.1212L8.90861 98.9091L12.2794 105.212L16.6134 109.333L18.5395 117.333L25.7627 133.576L34.4306 144L34.9121 144.485L38.0422 160.242L27.4482 179.636L24.0773 182.303L21.6696 184.242H17.3357L14.9279 185.455L12.0387 185.697L10.3533 187.394L6.74165 186.909L3.13006 186.667L0.481548 188.606L0 192L1.92619 189.818L5.05624 188.848L5.29701 192L10.3533 190.303L13.2425 190.061L18.2988 190.788C18.2988 190.788 22.6327 190.545 23.355 190.303C24.0773 190.303 28.8928 190.788 28.8928 190.788L32.2636 190.303L34.1898 191.03L36.5975 190.303L39.246 191.515L43.0984 191.03L43.58 188.364L43.3392 186.909L45.9877 187.879L48.1547 189.576L49.5993 191.515V189.091L47.9139 186.182C47.9139 186.182 46.71 184.485 45.9877 184.727C45.2654 184.727 42.3761 184.242 42.3761 184.242L40.4499 184.97L38.283 184L36.116 185.212L34.1898 184.485L33.2267 182.545L31.7821 182.061L33.2267 178.182L36.5975 173.333L41.1722 165.576L45.2654 160.727L46.71 158.788C46.71 158.788 48.6362 155.879 48.6362 155.152C48.6362 154.424 49.1178 146.182 49.1178 146.182L46.71 140.848L45.5061 136.485L67.6573 141.818H68.8612L87.8823 155.636L90.5308 159.03L91.4938 172.848L91.0123 176L89.5677 178.424L88.6046 179.879L87.8823 182.061L87.4007 183.515L83.7891 184.727L80.1775 184L78.0106 183.758L73.9174 184.242L72.232 185.939L71.5097 188.121L71.9912 190.303L72.7135 188.121L73.9174 186.667L75.1213 186.424V188.364L76.5659 189.333L79.696 187.879L81.1406 187.636L81.6221 189.818H86.1968L89.3269 188.848L91.9754 189.333L95.8278 189.818L97.0316 189.333L97.9947 188.364L99.6801 191.758V187.879L97.9947 183.515L95.587 182.061L96.0686 180.848L94.3831 177.455L94.6239 164.849L104.255 176.242L117.016 186.182C117.016 186.182 125.684 189.333 126.406 189.333C127.128 189.333 133.148 188.606 133.148 188.606L137 182.303L134.111 173.576L135.315 170.667L129.295 162.667L116.293 149.333L113.163 138.909L113.404 131.879L110.515 124.364L107.385 118.788L109.311 112.727L107.866 104L101.366 89.2121L103.773 88.7273L99.4394 81.9394L102.088 81.2121L97.5132 73.697L99.4394 72.7273L96.0686 66.9091L97.2724 66.1818L92.9385 62.5455L94.3831 61.8182L83.5483 54.0606L69.8243 44.3636Z"
- android:fillColor="#000000" />
-</vector> \ No newline at end of file
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.png b/app/src/custom/res/drawable/rotate_progress_image.png
new file mode 100644
index 00000000..ca160d00
--- /dev/null
+++ b/app/src/custom/res/drawable/rotate_progress_image.png
Binary files differ
diff --git a/app/src/custom/res/drawable/splash_branding.xml b/app/src/custom/res/drawable/splash_branding.xml
new file mode 100644
index 00000000..8bbd83ca
--- /dev/null
+++ b/app/src/custom/res/drawable/splash_branding.xml
@@ -0,0 +1,47 @@
+<vector
+ android:height="80dp"
+ android:viewportHeight="80"
+ android:viewportWidth="160"
+ android:width="160dp"
+ xmlns:android="http://schemas.android.com/apk/res/android">
+ <group
+ android:translateX="-47"
+ android:translateY="0"
+ android:scaleX="0.25"
+ android:scaleY="0.25"
+ >
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m264.7,196.6 l-3.6,-37.6 -0.7,-28.1 12.8,-1.4 1.4,10.9 8.8,-8.8 18.3,-2.7 7.5,2.7 -1.4,14.6 -9.5,-2 -7.7,1.1 -6.9,7.6 -5,6.6 1.8,25.2 0.9,14.1z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m315.4,156.4 l-4.2,42.3l19,0l0,-27.9 0,-14z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m383.1,150.1 l5.7,-11.5 -10.4,-4.1 -11.1,-3.4 -17.4,6.9 -9.1,14.4 2.8,14.4 17.4,5.5 15.3,6.9 -1.1,7.7 -7.8,3.9 -16.2,-0.7 -7.7,-6.9 -7,11 9.1,8.2 27.9,2.7 14.6,-2.7 2.1,-14.4 1.4,-18.5 -17.4,-8.9 -12.5,-2.7 -0.7,-8.2 8.4,-4.8z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m408.5,164.9 l19.2,-0.9 21.1,-0.7 -0.7,-17.8 -10.9,-8.9 -25.2,-3.4 -15,8.2 -3.4,18.5l0,20.5l10.9,13.7 25.9,8.9l16.3,0l6.1,-7.5 -7.5,-11 -6.8,4.8 -19.7,-2.7 -7.5,-4.8 -4.1,-8.9z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m457.2,141.6l0,25.1l3.4,19.2 9.6,13 7.6,4.1l18.6,0l13.8,-8.9 3.4,-19.8 0.7,-26l0,-12.3l-14.8,-0.7l0,16.4l-0.3,22.6 -4.1,15.7 -8.3,2.1 -9.6,-4.8 -4.1,-10.9 -1.3,-22.5 0.5,-14.4z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m522.8,135.3 l-0.5,32.3 -1.6,29.4 1.3,3.8 13.2,-1.2 1.2,-35.5 20.4,-1.8 6.4,-6.6 1.9,-14.5 -6.2,-9.6 -23,-2.7z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m594.7,200.9 l-2.1,-30.4L592.6,139.5l14.8,0l0,12.4l11,-11 19.5,-3.4 13.2,10.3 -0.7,25.5 1.4,27.6 -16,-1.4 0.7,-26.9 -3.5,-15.2 -8.4,2.1 -9.8,2.8 -7.5,9.7l0,16.6 0,12.4z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m681.5,171.2 l22.9,-1.8 13.1,-2.1 -2.1,-19.6 -27.6,-14.7 -16.5,9.8 -8.3,16.1 -4.8,22.4 10.3,20.3 16.5,3.5 19.3,-0.7 11.7,-8.4 -9.6,-12.6 -3.4,4.2 -17.9,4.2 -11,-11.2 1.4,-6.3z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m723.8,135.3 l12.5,-0.2 -0.4,-14.6 13.5,2.1 1.4,12.8 15.3,-0.5l0,14.2l-16.3,-0.3 -0.7,11.6l0,14.5 0,11l3.6,6 10.6,-0.9 2,11.3 2.9,11.2 -21,-8.5 -10.7,-9.7 -2.7,-11.8 -0.1,-13.5 1.1,-21.7 -11.2,-0.4 0.1,-12.8z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000"
+ android:pathData="m332.4,152.2 l-13,-1 -1.3,-14c0,0 -6.6,-13.1 -10.7,-15.1 -4.1,-2 -8.8,-6.1 -8.8,-6.1 0,0 5.4,-4.7 10.2,-1.3 4.8,3.4 4.8,4 4.8,4 0,0 5.4,2 6.8,-8.1 1.4,-10.1 5.3,-24.8 5.3,-24.8 0,0 2.7,-4 4.8,-1.3 2,2.7 -4,25.5 -4,25.5l11.9,-25.2c0,0 3.4,-3.4 4.1,0.7 0.7,4 -8.5,25.2 -8.5,25.2l11.7,-17.5c0,0 4.8,-2.7 4.8,1.3 0,4 -11,18.2 -11,18.2l14.4,-8.6c0,0 4.8,-1.3 4.1,2.7 -0.7,4 -14.2,7.4 -17.8,16 -3.9,8.6 -7.6,29.5 -7.6,29.5z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ <path android:fillColor="#000000" android:fillType="evenOdd"
+ android:pathData="m567.2,186 l-2.1,14.8 14.8,-1.3 -2.7,-13.5z"
+ android:strokeColor="#00000000" android:strokeWidth="0.6"/>
+ </group>
+</vector>
diff --git a/app/src/custom/res/drawable/splash_icon.xml b/app/src/custom/res/drawable/splash_icon.xml
new file mode 100644
index 00000000..e8335bc6
--- /dev/null
+++ b/app/src/custom/res/drawable/splash_icon.xml
@@ -0,0 +1,17 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="288"
+ android:viewportHeight="288"
+ android:width="288dp"
+ android:height="288dp">
+ <group
+ android:scaleX="0.9"
+ android:scaleY="0.9"
+ android:translateX="86"
+ android:translateY="56"
+ >
+ <path
+ android:pathData="M69.8243 44.3636C69.8243 44.3636 66.935 38.7879 66.6942 38.0606C66.4534 37.3333 65.0088 29.3333 65.0088 29.3333L66.935 25.9394L71.2689 19.6364L77.2882 14.7879L78.7328 14.303L93.42 8.72727L94.8647 7.27273L93.42 4.84849L91.2531 3.63636L87.4007 2.66666L77.7698 1.69697H70.3058L65.2496 2.90909L60.6749 1.21212L54.8963 0.484846L46.4692 0.242421L42.1353 0L35.1529 2.66666L24.3181 15.2727L22.8735 20.1212L22.1511 24.4848L18.5395 32.4848L16.1318 40L14.9279 48V49.697L9.39016 58.1818L6.26011 64.4848V73.4545L7.2232 92.1212L8.90861 98.9091L12.2794 105.212L16.6134 109.333L18.5395 117.333L25.7627 133.576L34.4306 144L34.9121 144.485L38.0422 160.242L27.4482 179.636L24.0773 182.303L21.6696 184.242H17.3357L14.9279 185.455L12.0387 185.697L10.3533 187.394L6.74165 186.909L3.13006 186.667L0.481548 188.606L0 192L1.92619 189.818L5.05624 188.848L5.29701 192L10.3533 190.303L13.2425 190.061L18.2988 190.788C18.2988 190.788 22.6327 190.545 23.355 190.303C24.0773 190.303 28.8928 190.788 28.8928 190.788L32.2636 190.303L34.1898 191.03L36.5975 190.303L39.246 191.515L43.0984 191.03L43.58 188.364L43.3392 186.909L45.9877 187.879L48.1547 189.576L49.5993 191.515V189.091L47.9139 186.182C47.9139 186.182 46.71 184.485 45.9877 184.727C45.2654 184.727 42.3761 184.242 42.3761 184.242L40.4499 184.97L38.283 184L36.116 185.212L34.1898 184.485L33.2267 182.545L31.7821 182.061L33.2267 178.182L36.5975 173.333L41.1722 165.576L45.2654 160.727L46.71 158.788C46.71 158.788 48.6362 155.879 48.6362 155.152C48.6362 154.424 49.1178 146.182 49.1178 146.182L46.71 140.848L45.5061 136.485L67.6573 141.818H68.8612L87.8823 155.636L90.5308 159.03L91.4938 172.848L91.0123 176L89.5677 178.424L88.6046 179.879L87.8823 182.061L87.4007 183.515L83.7891 184.727L80.1775 184L78.0106 183.758L73.9174 184.242L72.232 185.939L71.5097 188.121L71.9912 190.303L72.7135 188.121L73.9174 186.667L75.1213 186.424V188.364L76.5659 189.333L79.696 187.879L81.1406 187.636L81.6221 189.818H86.1968L89.3269 188.848L91.9754 189.333L95.8278 189.818L97.0316 189.333L97.9947 188.364L99.6801 191.758V187.879L97.9947 183.515L95.587 182.061L96.0686 180.848L94.3831 177.455L94.6239 164.849L104.255 176.242L117.016 186.182C117.016 186.182 125.684 189.333 126.406 189.333C127.128 189.333 133.148 188.606 133.148 188.606L137 182.303L134.111 173.576L135.315 170.667L129.295 162.667L116.293 149.333L113.163 138.909L113.404 131.879L110.515 124.364L107.385 118.788L109.311 112.727L107.866 104L101.366 89.2121L103.773 88.7273L99.4394 81.9394L102.088 81.2121L97.5132 73.697L99.4394 72.7273L96.0686 66.9091L97.2724 66.1818L92.9385 62.5455L94.3831 61.8182L83.5483 54.0606L69.8243 44.3636Z"
+ android:fillColor="#000000" />
+ </group>
+
+</vector> \ No newline at end of file
diff --git a/app/src/custom/res/drawable/splash_page.xml b/app/src/custom/res/drawable/splash_page.xml
index 4c72dfe2..48a622ac 100644
--- a/app/src/custom/res/drawable/splash_page.xml
+++ b/app/src/custom/res/drawable/splash_page.xml
@@ -1,4 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
+<!--
+********************************************************************
+Splash screen for Android 4.1 - Android 11
+
+You need to adapt:
+> splash_branding.xml
+> splash_icon.xml
+for Android 12+.
+********************************************************************
+-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--Replace custom/res/drawable-hdpi/ic_splash_background with background image-->
diff --git a/app/src/custom/res/drawable/state_connected.png b/app/src/custom/res/drawable/state_connected.png
new file mode 100644
index 00000000..0fbb82f2
--- /dev/null
+++ b/app/src/custom/res/drawable/state_connected.png
Binary files differ
diff --git a/app/src/custom/res/drawable/state_connecting.png b/app/src/custom/res/drawable/state_connecting.png
new file mode 100644
index 00000000..7d78587e
--- /dev/null
+++ b/app/src/custom/res/drawable/state_connecting.png
Binary files differ
diff --git a/app/src/custom/res/drawable/state_disconnected.xml b/app/src/custom/res/drawable/state_disconnected.xml
new file mode 100644
index 00000000..ee11473d
--- /dev/null
+++ b/app/src/custom/res/drawable/state_disconnected.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <bitmap android:src="@drawable/ic_motd"/>
+ </item>
+</selector> \ No newline at end of file
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/values/custom-theme.xml b/app/src/custom/res/values/custom-theme.xml
index a17b401c..48d04322 100644
--- a/app/src/custom/res/values/custom-theme.xml
+++ b/app/src/custom/res/values/custom-theme.xml
@@ -9,13 +9,16 @@
<color name="colorActionBarTitleFont">#ffffff</color>
<!--Font color of the action bar subtitle-->
<color name="colorActionBarSubtitleFont">#cccccc</color>
+ <!-- action bar text colors for per state colored action bar -->
+ <color name="actionbar_connectivity_state_text_color_dark">@color/black800_dark</color>
+ <color name="actionbar_connectivity_state_text_color_light">@color/white</color>
<!-- Font color of labels in EipFragment (main screen)-->
- <color name="colorEipFragmentFont">#ffffff</color>
+ <color name="colorEipFragmentFont">@color/black800_dark</color>
<!-- glow effect color of the on / off button -->
<color name="colorMainBtnHighlight">#58FFA9</color>
<!-- glow effect color of the on / off button if no network / traffic blocked -->
<color name="colorMainBtnError">#eF2222</color>
<!-- location button icon tint color -->
- <color name="colorLocationButtonTint">#ffffff</color>
- <color name="colorLocationButtonTintTransparent">#22ffffff</color>
+ <color name="colorLocationButtonTint">@color/black800</color>
+ <color name="colorLocationButtonTintTransparent">@color/black800_transparent</color>
</resources>
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java b/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java
index 28b981be..f56f2223 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/MainActivity.java
@@ -263,7 +263,7 @@ public class MainActivity extends AppCompatActivity implements EipSetupListener,
}
if (textColor == 0) {
- actionBarTextColor = isBrightColor(color) ? R.color.actionbar_dark_color : R.color.actionbar_light_color;
+ actionBarTextColor = isBrightColor(color) ? R.color.actionbar_connectivity_state_text_color_dark : R.color.actionbar_connectivity_state_text_color_light;
} else {
actionBarTextColor = textColor;
}
diff --git a/app/src/normal/java/se.leap.bitmaskclient.base.fragments/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java
index 0210077c..a5ccb81d 100644
--- a/app/src/normal/java/se.leap.bitmaskclient.base.fragments/EipFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/fragments/EipFragment.java
@@ -41,6 +41,9 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
+import android.graphics.drawable.Animatable;
+import android.graphics.drawable.Animatable2;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.IBinder;
import android.text.Spannable;
@@ -53,6 +56,7 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.ColorRes;
+import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.AppCompatImageView;
@@ -61,6 +65,9 @@ import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
+import androidx.vectordrawable.graphics.drawable.Animatable2Compat;
+import androidx.vectordrawable.graphics.drawable.Animatable2Compat.AnimationCallback;
+import androidx.vectordrawable.graphics.drawable.AnimatedVectorDrawableCompat;
import java.util.Observable;
import java.util.Observer;
@@ -106,10 +113,12 @@ public class EipFragment extends Fragment implements Observer {
AppCompatTextView mainDescription;
AppCompatTextView subDescription;
+ private EipStatus.EipLevel previousEipLevel = EipStatus.EipLevel.UNKNOWN;
private EipStatus eipStatus;
private ProviderObservable providerObservable;
private TorStatusObservable torStatusObservable;
+ private @DrawableRes int pendingAnimationState;
private GatewaysManager gatewaysManager;
//---saved Instance -------
@@ -407,6 +416,7 @@ public class EipFragment extends Fragment implements Observer {
@Override
public void update(Observable observable, Object data) {
if (observable instanceof EipStatus) {
+ previousEipLevel = eipStatus.getEipLevel();
eipStatus = (EipStatus) observable;
handleNewStateOnMain();
@@ -438,7 +448,7 @@ public class EipFragment extends Fragment implements Observer {
if (activity == null) {
return;
}
- ((MainActivity) getActivity()).setActivityBarColor(primaryColor, secondaryColor, R.color.actionbar_dark_color);
+ ((MainActivity) getActivity()).setActivityBarColor(primaryColor, secondaryColor, R.color.actionbar_connectivity_state_text_color_dark);
}
private void handleNewState() {
@@ -468,8 +478,8 @@ public class EipFragment extends Fragment implements Observer {
} else {
subDescription.setText(getString(R.string.updating_certificate_message));
}
- background.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.bg_connecting));
- stateView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.yellow_mask));
+ background.setImageResource(R.drawable.bg_connecting);
+ animateState(R.drawable.state_connecting);
mainButton.updateState(false, true, false);
setActivityBarColor(R.color.bg_connecting_top, R.color.bg_connecting_top_light_transparent);
} else if (eipStatus.isConnecting()) {
@@ -484,8 +494,8 @@ public class EipFragment extends Fragment implements Observer {
locationButton.showRecommendedIndicator(false);
mainDescription.setText(R.string.eip_status_connecting);
subDescription.setText(null);
- background.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.bg_connecting));
- stateView.setImageDrawable(ContextCompat.getDrawable(activity, R.drawable.yellow_mask));
+ background.setImageResource(R.drawable.bg_connecting);
+ animateState(R.drawable.state_connecting);
mainButton.updateState(false, true, false);
setActivityBarColor(R.color.bg_connecting_top, R.color.bg_connecting_top_light_transparent);
} else if (eipStatus.isConnected()) {
@@ -498,8 +508,8 @@ public class EipFragment extends Fragment implements Observer {
locationButton.showRecommendedIndicator(getPreferredCity(getContext()) == null);
mainDescription.setText(R.string.eip_status_secured);
subDescription.setText(null);
- background.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.bg_connected));
- stateView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.green_mask));
+ background.setImageResource(R.drawable.bg_connected);
+ animateState(R.drawable.state_connected);
setActivityBarColor(R.color.bg_running_top, R.color.bg_running_top_light_transparent);
} else if(isOpenVpnRunningWithoutNetwork()) {
Log.d(TAG, "eip fragment eipStatus - isOpenVpnRunningWithoutNetwork");
@@ -511,8 +521,8 @@ public class EipFragment extends Fragment implements Observer {
locationButton.showRecommendedIndicator(getPreferredCity(getContext())== null);
mainDescription.setText(R.string.eip_state_connected);
subDescription.setText(R.string.eip_state_no_network);
- background.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.bg_connecting));
- stateView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.yellow_mask));
+ background.setImageResource(R.drawable.bg_connecting);
+ animateState(R.drawable.state_connecting);
setActivityBarColor(R.color.bg_connecting_top, R.color.bg_connecting_top_light_transparent);
} else if (eipStatus.isDisconnected() && reconnectingWithDifferentGateway()) {
locationButton.setText(VpnStatus.getCurrentlyConnectingVpnName());
@@ -521,31 +531,34 @@ public class EipFragment extends Fragment implements Observer {
locationButton.showRecommendedIndicator(false);
mainDescription.setText(R.string.eip_status_connecting);
subDescription.setText(R.string.reconnecting);
- background.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.bg_connecting));
- stateView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.yellow_mask));
+ background.setImageResource(R.drawable.bg_connecting);
+ animateState(R.drawable.state_connecting);
setActivityBarColor(R.color.bg_connecting_top, R.color.bg_connecting_top_light_transparent);
-
} else if (eipStatus.isDisconnecting()) {
setMainButtonEnabled(false);
- background.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.bg_disconnected));
- stateView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.red_mask));
mainButton.updateState(false, false, false);
mainDescription.setText(R.string.eip_status_unsecured);
+ background.setImageResource(R.drawable.bg_disconnected);
+ if (previousEipLevel == EipStatus.EipLevel.CONNECTED) {
+ animateState(R.drawable.state_transition_connected_disconnected);
+ } else {
+ animateState(R.drawable.state_disconnected);
+ }
setActivityBarColor(R.color.bg_disconnected_top, R.color.bg_disconnected_top_light_transparent);
} else if (eipStatus.isBlocking()) {
setMainButtonEnabled(true);
mainButton.updateState(true, false, true);
- locationButton.setText(getString(R.string.no_location));
+ locationButton.setText(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)));
- background.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.bg_disconnected));
- stateView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.red_mask));
+ background.setImageResource(R.drawable.bg_disconnected);
+ animateState(R.drawable.state_disconnected);
setActivityBarColor(R.color.bg_disconnected_top, R.color.bg_disconnected_top_light_transparent);
} else {
- locationButton.setText(getContext().getString(R.string.vpn_button_turn_on));
+ locationButton.setText(R.string.vpn_button_turn_on);
setMainButtonEnabled(true);
mainButton.updateState(false, false, false);
locationButton.setLocationLoad(UNKNOWN);
@@ -555,12 +568,52 @@ public class EipFragment extends Fragment implements Observer {
locationButton.showRecommendedIndicator(false);
mainDescription.setText(R.string.eip_status_unsecured);
subDescription.setText(null);
- background.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.bg_disconnected));
- stateView.setImageDrawable(ContextCompat.getDrawable(getContext(), R.drawable.red_mask));
+ background.setImageResource(R.drawable.bg_disconnected);
+
+ animateState(R.drawable.state_disconnected);
setActivityBarColor(R.color.bg_disconnected_top, R.color.bg_disconnected_top_light_transparent);
}
}
+ private void animateState(@DrawableRes int drawableRes) {
+ @DrawableRes int lastDrawableId;
+ try {
+ lastDrawableId = (int) stateView.getTag();
+ if (lastDrawableId == drawableRes) {
+ return;
+ }
+
+ Drawable lastDrawable = ContextCompat.getDrawable(getContext(), lastDrawableId);
+ if (lastDrawable instanceof Animatable && ((Animatable) lastDrawable).isRunning()) {
+ pendingAnimationState = drawableRes;
+ }
+
+ } catch (NullPointerException | ClassCastException e) {
+ // eat me
+ }
+
+
+ stateView.setImageResource(drawableRes);
+ stateView.setTag(drawableRes);
+ if (stateView.getDrawable() instanceof Animatable) {
+ Animatable animatedDrawable = (Animatable) stateView.getDrawable();
+ AnimatedVectorDrawableCompat.registerAnimationCallback(stateView.getDrawable(), new AnimationCallback() {
+ @Override
+ public void onAnimationEnd(Drawable drawable) {
+ super.onAnimationEnd(drawable);
+ if (pendingAnimationState != 0) {
+ int newAnimationRes = pendingAnimationState;
+ pendingAnimationState = 0;
+ animateState(newAnimationRes);
+ } else if (drawable instanceof Animatable){
+ ((Animatable) drawable).start();
+ }
+ }
+ });
+ animatedDrawable.start();
+ }
+ }
+
private boolean isOpenVpnRunningWithoutNetwork() {
boolean isRunning = false;
try {
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/views/LocationButton.java b/app/src/main/java/se/leap/bitmaskclient/base/views/LocationButton.java
index 7ad044bd..ae77d60e 100644
--- a/app/src/main/java/se/leap/bitmaskclient/base/views/LocationButton.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/views/LocationButton.java
@@ -8,6 +8,7 @@ import android.widget.RelativeLayout;
import androidx.annotation.ColorRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
@@ -52,6 +53,10 @@ public class LocationButton extends RelativeLayout {
textView.setText(text);
}
+ public void setText(@StringRes int resId) {
+ textView.setText(resId);
+ }
+
public void showBridgeIndicator(boolean show) {
bridgeView.setVisibility(show ? VISIBLE : GONE);
}
diff --git a/app/src/normal/java/se/leap/bitmaskclient/base/views/MainButton.java b/app/src/main/java/se/leap/bitmaskclient/base/views/MainButton.java
index 715063b5..715063b5 100644
--- a/app/src/normal/java/se/leap/bitmaskclient/base/views/MainButton.java
+++ b/app/src/main/java/se/leap/bitmaskclient/base/views/MainButton.java
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
index 003e396f..c9cf6041 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
@@ -129,8 +129,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
}
- @VisibleForTesting
- EipLevel getEipLevel() {
+ public EipLevel getEipLevel() {
return currentEipLevel;
}
diff --git a/app/src/main/res/color/main_button_state_color.xml b/app/src/main/res/color/main_button_state_color.xml
deleted file mode 100644
index 9650b033..00000000
--- a/app/src/main/res/color/main_button_state_color.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="@color/colorPrimaryDark" android:state_pressed="true"/>
- <item android:color="@color/colorPrimary"/>
-</selector> \ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi-v24/ic_btn_cancel.xml b/app/src/main/res/drawable-anydpi-v24/ic_btn_cancel.xml
new file mode 100644
index 00000000..9870cd4f
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi-v24/ic_btn_cancel.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="35"
+ android:viewportHeight="35"
+ android:width="35dp"
+ android:height="35dp">
+ <path
+ android:pathData="M4.9 35L17.5 22.4L30.1 35L35 30.1L22.4 17.5L35 4.9L30.1 0L17.5 12.6L4.9 0L0 4.9L12.6 17.5L0 30.1L4.9 35Z"
+ android:fillColor="#FFFFFF" />
+</vector> \ No newline at end of file
diff --git a/app/src/main/res/drawable-anydpi-v24/ic_btn_on.xml b/app/src/main/res/drawable-anydpi-v24/ic_btn_on.xml
new file mode 100644
index 00000000..0f3fc0f4
--- /dev/null
+++ b/app/src/main/res/drawable-anydpi-v24/ic_btn_on.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="40"
+ android:viewportHeight="43"
+ android:width="40dp"
+ android:height="43dp">
+ <path
+ android:pathData="M33.0178 7.38594C32.1199 6.61398 30.7913 6.74461 29.9562 7.58411C28.8438 8.70244 29.0811 10.5681 30.2333 11.6454C33.1633 14.3851 35 18.2798 35 22.6203C35 26.6198 33.4196 30.4556 30.6066 33.2836C27.7936 36.1117 23.9782 37.7005 20 37.7005C16.0218 37.7005 12.2064 36.1117 9.3934 33.2836C6.58035 30.4556 5 26.6198 5 22.6203C5 18.2699 6.84513 14.3673 9.77413 11.6139C10.9153 10.5411 11.1444 8.69064 10.0399 7.58018C9.20708 6.74295 7.88204 6.6127 6.98641 7.38232C2.70788 11.0589 0 16.5193 0 22.6203C0 27.953 2.10714 33.0673 5.85786 36.8381C9.60859 40.6089 14.6957 42.7273 20 42.7273C25.3043 42.7273 30.3914 40.6089 34.1421 36.8381C37.8929 33.0673 40 27.953 40 22.6203C40 16.5213 37.2939 11.0625 33.0178 7.38594ZM22.5 0C19.7386 0 17.5 2.23858 17.5 5V20.1337C17.5 22.8951 19.7386 25.1337 22.5 25.1337"
+ android:fillColor="#FFFFFF" />
+</vector> \ No newline at end of file
diff --git a/app/src/main/res/drawable-hdpi/bg_connected.png b/app/src/main/res/drawable-hdpi/bg_connected.png
deleted file mode 100644
index 0e98f705..00000000
--- a/app/src/main/res/drawable-hdpi/bg_connected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/bg_connecting.png b/app/src/main/res/drawable-hdpi/bg_connecting.png
deleted file mode 100644
index 24632712..00000000
--- a/app/src/main/res/drawable-hdpi/bg_connecting.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/bg_disconnected.png b/app/src/main/res/drawable-hdpi/bg_disconnected.png
deleted file mode 100644
index de96be57..00000000
--- a/app/src/main/res/drawable-hdpi/bg_disconnected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_btn_cancel.png b/app/src/main/res/drawable-hdpi/ic_btn_cancel.png
deleted file mode 100644
index 00feedcd..00000000
--- a/app/src/main/res/drawable-hdpi/ic_btn_cancel.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/ic_btn_on.png b/app/src/main/res/drawable-hdpi/ic_btn_on.png
deleted file mode 100644
index 2b37d25e..00000000
--- a/app/src/main/res/drawable-hdpi/ic_btn_on.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/bg_connected.png b/app/src/main/res/drawable-xhdpi/bg_connected.png
deleted file mode 100644
index 915dff95..00000000
--- a/app/src/main/res/drawable-xhdpi/bg_connected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/bg_connecting.png b/app/src/main/res/drawable-xhdpi/bg_connecting.png
deleted file mode 100644
index be4469df..00000000
--- a/app/src/main/res/drawable-xhdpi/bg_connecting.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/bg_disconnected.png b/app/src/main/res/drawable-xhdpi/bg_disconnected.png
deleted file mode 100644
index 433c776f..00000000
--- a/app/src/main/res/drawable-xhdpi/bg_disconnected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_btn_cancel.png b/app/src/main/res/drawable-xhdpi/ic_btn_cancel.png
deleted file mode 100644
index d623f8f5..00000000
--- a/app/src/main/res/drawable-xhdpi/ic_btn_cancel.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_btn_on.png b/app/src/main/res/drawable-xhdpi/ic_btn_on.png
deleted file mode 100644
index 4fdc9464..00000000
--- a/app/src/main/res/drawable-xhdpi/ic_btn_on.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/bg_connected.png b/app/src/main/res/drawable-xxhdpi/bg_connected.png
deleted file mode 100644
index cd78d865..00000000
--- a/app/src/main/res/drawable-xxhdpi/bg_connected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/bg_connecting.png b/app/src/main/res/drawable-xxhdpi/bg_connecting.png
deleted file mode 100644
index 718e102f..00000000
--- a/app/src/main/res/drawable-xxhdpi/bg_connecting.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/bg_disconnected.png b/app/src/main/res/drawable-xxhdpi/bg_disconnected.png
deleted file mode 100644
index ffbcdb79..00000000
--- a/app/src/main/res/drawable-xxhdpi/bg_disconnected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/bg_switchbar.xml b/app/src/main/res/drawable-xxhdpi/bg_switchbar.xml
deleted file mode 100644
index 7af57ad3..00000000
--- a/app/src/main/res/drawable-xxhdpi/bg_switchbar.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (c) 2012-2016 Arne Schwabe
- ~ Distributed under the GNU GPL v2 with additional terms. For full terms see the file doc/LICENSE.txt
- -->
-
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
- <solid android:color="@color/switchbar" />
-</shape> \ No newline at end of file
diff --git a/app/src/main/res/drawable-xxhdpi/ic_btn_cancel.png b/app/src/main/res/drawable-xxhdpi/ic_btn_cancel.png
deleted file mode 100644
index af604d9b..00000000
--- a/app/src/main/res/drawable-xxhdpi/ic_btn_cancel.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_btn_on.png b/app/src/main/res/drawable-xxhdpi/ic_btn_on.png
deleted file mode 100644
index d6cfc10b..00000000
--- a/app/src/main/res/drawable-xxhdpi/ic_btn_on.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/bg_connected.png b/app/src/main/res/drawable-xxxhdpi/bg_connected.png
deleted file mode 100644
index 3c9d97b4..00000000
--- a/app/src/main/res/drawable-xxxhdpi/bg_connected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/bg_connecting.png b/app/src/main/res/drawable-xxxhdpi/bg_connecting.png
deleted file mode 100644
index bff2004c..00000000
--- a/app/src/main/res/drawable-xxxhdpi/bg_connecting.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/bg_disconnected.png b/app/src/main/res/drawable-xxxhdpi/bg_disconnected.png
deleted file mode 100644
index 2503f135..00000000
--- a/app/src/main/res/drawable-xxxhdpi/bg_disconnected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_btn_cancel.png b/app/src/main/res/drawable-xxxhdpi/ic_btn_cancel.png
deleted file mode 100644
index 6c17bd78..00000000
--- a/app/src/main/res/drawable-xxxhdpi/ic_btn_cancel.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_btn_on.png b/app/src/main/res/drawable-xxxhdpi/ic_btn_on.png
deleted file mode 100644
index b0e54b8c..00000000
--- a/app/src/main/res/drawable-xxxhdpi/ic_btn_on.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/bg_connected.png b/app/src/main/res/drawable/bg_connected.png
deleted file mode 100644
index 6da7878d..00000000
--- a/app/src/main/res/drawable/bg_connected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/bg_connecting.png b/app/src/main/res/drawable/bg_connecting.png
deleted file mode 100644
index c371f3f0..00000000
--- a/app/src/main/res/drawable/bg_connecting.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/bg_disconnected.png b/app/src/main/res/drawable/bg_disconnected.png
deleted file mode 100644
index de96be57..00000000
--- a/app/src/main/res/drawable/bg_disconnected.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/button_circle_cancel_pressed.xml b/app/src/main/res/drawable/button_circle_cancel_pressed.xml
index 690baa0c..b2efa78b 100644
--- a/app/src/main/res/drawable/button_circle_cancel_pressed.xml
+++ b/app/src/main/res/drawable/button_circle_cancel_pressed.xml
@@ -55,10 +55,6 @@
android:bottom="62dp"
android:left="50dp"
android:right="50dp"
- >
- <bitmap android:src="@drawable/ic_btn_cancel"
- />
- </item>
-
+ android:drawable="@drawable/ic_btn_cancel" />
</layer-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/button_circle_cancel_released.xml b/app/src/main/res/drawable/button_circle_cancel_released.xml
index 833a9076..70d47257 100644
--- a/app/src/main/res/drawable/button_circle_cancel_released.xml
+++ b/app/src/main/res/drawable/button_circle_cancel_released.xml
@@ -8,10 +8,10 @@
</item>-->
<item
- android:left="-23dp"
- android:right="-23dp"
- android:top="-8dp"
- android:bottom="-8dp"
+ android:left="-25dp"
+ android:right="-25dp"
+ android:top="-10dp"
+ android:bottom="-10dp"
>
<animated-rotate
android:drawable="@drawable/rotate_progress_image"
@@ -37,14 +37,14 @@
>
<shape
android:shape="ring"
- android:innerRadius="125dp"
+ android:innerRadius="123dp"
android:useLevel="false"
- android:thickness="10dp">
+ android:thickness="15dp">
<gradient
android:type="radial"
android:gradientRadius="125dp"
android:centerX="0.51"
- android:centerY="0.54"
+ android:centerY="0.58"
android:startColor="#000000"
android:centerColor="#000000"
android:endColor="@color/transparent" />
@@ -56,7 +56,6 @@
android:bottom="65dp"
android:left="50dp"
android:right="50dp"
- >
- <bitmap android:src="@drawable/ic_btn_cancel" />
- </item>
+ android:drawable="@drawable/ic_btn_cancel"
+ />
</layer-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/button_circle_start_pressed.xml b/app/src/main/res/drawable/button_circle_start_pressed.xml
index 4157ffe0..dd8496c3 100644
--- a/app/src/main/res/drawable/button_circle_start_pressed.xml
+++ b/app/src/main/res/drawable/button_circle_start_pressed.xml
@@ -40,8 +40,5 @@
android:bottom="62dp"
android:left="50dp"
android:right="50dp"
- >
- <bitmap android:src="@drawable/ic_btn_on"
- />
- </item>
+ android:drawable="@drawable/ic_btn_on" />
</layer-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/button_circle_start_released.xml b/app/src/main/res/drawable/button_circle_start_released.xml
index 671d06dc..ad748e9c 100644
--- a/app/src/main/res/drawable/button_circle_start_released.xml
+++ b/app/src/main/res/drawable/button_circle_start_released.xml
@@ -21,14 +21,14 @@
>
<shape
android:shape="ring"
- android:innerRadius="125dp"
+ android:innerRadius="122dp"
android:useLevel="false"
- android:thickness="10dp">
+ android:thickness="15dp">
<gradient
android:type="radial"
android:gradientRadius="125dp"
android:centerX="0.51"
- android:centerY="0.54"
+ android:centerY="0.58"
android:startColor="#000000"
android:centerColor="#000000"
android:endColor="@color/transparent" />
@@ -40,7 +40,5 @@
android:bottom="65dp"
android:left="50dp"
android:right="50dp"
- >
- <bitmap android:src="@drawable/ic_btn_on" />
- </item>
+ android:drawable="@drawable/ic_btn_on" />
</layer-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/button_circle_stop_pressed.xml b/app/src/main/res/drawable/button_circle_stop_pressed.xml
index ce7583f1..79f794b2 100644
--- a/app/src/main/res/drawable/button_circle_stop_pressed.xml
+++ b/app/src/main/res/drawable/button_circle_stop_pressed.xml
@@ -40,8 +40,5 @@
android:bottom="62dp"
android:left="50dp"
android:right="50dp"
- >
- <bitmap android:src="@drawable/ic_btn_cancel"
- />
- </item>
+ android:drawable="@drawable/ic_btn_cancel" />
</layer-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/button_circle_stop_released.xml b/app/src/main/res/drawable/button_circle_stop_released.xml
index ed786ee0..62827b66 100644
--- a/app/src/main/res/drawable/button_circle_stop_released.xml
+++ b/app/src/main/res/drawable/button_circle_stop_released.xml
@@ -21,14 +21,14 @@
>
<shape
android:shape="ring"
- android:innerRadius="125dp"
+ android:innerRadius="122dp"
android:useLevel="false"
- android:thickness="10dp">
+ android:thickness="15dp">
<gradient
android:type="radial"
android:gradientRadius="125dp"
android:centerX="0.51"
- android:centerY="0.54"
+ android:centerY="0.58"
android:startColor="#000000"
android:centerColor="#000000"
android:endColor="@color/transparent" />
@@ -40,7 +40,6 @@
android:bottom="65dp"
android:left="50dp"
android:right="50dp"
- >
- <bitmap android:src="@drawable/ic_btn_cancel" />
- </item>
+ android:drawable="@drawable/ic_btn_cancel"
+ />
</layer-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/footer_text_drawable.xml b/app/src/main/res/drawable/footer_text_drawable.xml
index 801746df..e3ec5005 100644
--- a/app/src/main/res/drawable/footer_text_drawable.xml
+++ b/app/src/main/res/drawable/footer_text_drawable.xml
@@ -13,6 +13,8 @@
android:gravity="center"
android:top="@dimen/footer_text_padding"
android:bottom="@dimen/footer_text_padding"
+ android:left="20dp"
+ android:right="20dp"
>
<bitmap android:src="@drawable/leap_footer_en"/>
</item>
diff --git a/app/src/main/res/drawable/ic_btn_cancel.png b/app/src/main/res/drawable/ic_btn_cancel.png
index 0b55460a..af604d9b 100644
--- a/app/src/main/res/drawable/ic_btn_cancel.png
+++ b/app/src/main/res/drawable/ic_btn_cancel.png
Binary files differ
diff --git a/app/src/main/res/drawable/ic_btn_on.png b/app/src/main/res/drawable/ic_btn_on.png
index be160a33..d6cfc10b 100644
--- a/app/src/main/res/drawable/ic_btn_on.png
+++ b/app/src/main/res/drawable/ic_btn_on.png
Binary files differ
diff --git a/app/src/main/res/drawable/ic_btn_on_connecting.xml b/app/src/main/res/drawable/ic_btn_on_connecting.xml
deleted file mode 100644
index 4b3d1384..00000000
--- a/app/src/main/res/drawable/ic_btn_on_connecting.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
- android:height="24dp"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:pathData="M13,4.0089C13.0002,3.4567 12.5527,3.0088 12.0004,3.0085C11.4481,3.0083 11.0002,3.4559 11,4.0082L10.9968,12.0116C10.9966,12.5639 11.4442,13.0118 11.9965,13.012C12.5487,13.0122 12.9966,12.5647 12.9968,12.0124L13,4.0089Z"
- android:strokeColor="@color/colorPrimary_transparent"
- android:strokeLineCap="round"
- android:strokeWidth="0.3"
- android:strokeLineJoin="round"
- android:fillAlpha="0.5"
- android:fillColor="@color/colorPrimary"/>
- <path
- android:pathData="M4,12.9917C4,10.7826 4.8954,8.7826 6.3431,7.3349L7.7573,8.7491C6.6715,9.8349 6,11.3349 6,12.9917C6,16.3054 8.6863,18.9917 12,18.9917C15.3137,18.9917 18,16.3054 18,12.9917C18,11.3348 17.3284,9.8348 16.2426,8.749L17.6568,7.3348C19.1046,8.7825 20,10.7825 20,12.9917C20,17.41 16.4183,20.9917 12,20.9917C7.5817,20.9917 4,17.41 4,12.9917Z"
- android:strokeColor="@color/colorPrimary_transparent"
- android:strokeLineCap="round"
- android:strokeWidth="0.3"
- android:strokeLineJoin="round"
- android:fillAlpha="0.5"
- android:fillColor="@color/colorPrimary"/>
-</vector>
diff --git a/app/src/main/res/drawable/ic_btn_on_disabled.xml b/app/src/main/res/drawable/ic_btn_on_disabled.xml
deleted file mode 100644
index 9c83422d..00000000
--- a/app/src/main/res/drawable/ic_btn_on_disabled.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
- android:height="24dp"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:pathData="M13,4.0089C13.0002,3.4567 12.5527,3.0088 12.0004,3.0085C11.4481,3.0083 11.0002,3.4559 11,4.0082L10.9968,12.0116C10.9966,12.5639 11.4442,13.0118 11.9965,13.012C12.5487,13.0122 12.9966,12.5647 12.9968,12.0124L13,4.0089Z"
- android:strokeColor="@color/colorPrimary_transparent"
- android:strokeWidth="0.3"
- android:fillAlpha="0.5"
- android:strokeLineJoin="round"
- android:fillColor="@color/white"/>
- <path
- android:pathData="M4,12.9917C4,10.7826 4.8954,8.7826 6.3431,7.3349L7.7573,8.7491C6.6715,9.8349 6,11.3349 6,12.9917C6,16.3054 8.6863,18.9917 12,18.9917C15.3137,18.9917 18,16.3054 18,12.9917C18,11.3348 17.3284,9.8348 16.2426,8.749L17.6568,7.3348C19.1046,8.7825 20,10.7825 20,12.9917C20,17.41 16.4183,20.9917 12,20.9917C7.5817,20.9917 4,17.41 4,12.9917Z"
- android:strokeColor="@color/colorPrimary_transparent"
- android:fillAlpha="0.5"
- android:strokeWidth="0.3"
- android:strokeLineJoin="round"
- android:fillColor="@color/white"/>
-</vector>
diff --git a/app/src/main/res/drawable/ic_btn_on_primary_color.xml b/app/src/main/res/drawable/ic_btn_on_primary_color.xml
deleted file mode 100644
index 9f449299..00000000
--- a/app/src/main/res/drawable/ic_btn_on_primary_color.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
- android:height="24dp"
- android:viewportWidth="24"
- android:viewportHeight="24">
- <path
- android:pathData="M13,4.0089C13.0002,3.4567 12.5527,3.0088 12.0004,3.0085C11.4481,3.0083 11.0002,3.4559 11,4.0082L10.9968,12.0116C10.9966,12.5639 11.4442,13.0118 11.9965,13.012C12.5487,13.0122 12.9966,12.5647 12.9968,12.0124L13,4.0089Z"
- android:strokeColor="@color/colorPrimary_transparent"
- android:strokeLineCap="round"
- android:strokeAlpha="0.8"
- android:strokeWidth="0.3"
- android:strokeLineJoin="round"
- android:fillColor="@color/colorPrimary"/>
- <path
- android:pathData="M4,12.9917C4,10.7826 4.8954,8.7826 6.3431,7.3349L7.7573,8.7491C6.6715,9.8349 6,11.3349 6,12.9917C6,16.3054 8.6863,18.9917 12,18.9917C15.3137,18.9917 18,16.3054 18,12.9917C18,11.3348 17.3284,9.8348 16.2426,8.749L17.6568,7.3348C19.1046,8.7825 20,10.7825 20,12.9917C20,17.41 16.4183,20.9917 12,20.9917C7.5817,20.9917 4,17.41 4,12.9917Z"
- android:strokeColor="@color/colorPrimary_transparent"
- android:strokeLineCap="round"
- android:strokeAlpha="0.8"
- android:strokeWidth="0.3"
- android:strokeLineJoin="round"
- android:fillColor="@color/colorPrimary"/>
-</vector>
diff --git a/app/src/main/res/drawable/logo.png b/app/src/main/res/drawable/logo.png
new file mode 100644
index 00000000..773937ff
--- /dev/null
+++ b/app/src/main/res/drawable/logo.png
Binary files differ
diff --git a/app/src/main/res/drawable/main_btn_glow.xml b/app/src/main/res/drawable/main_btn_glow.xml
deleted file mode 100644
index 5ed57dd5..00000000
--- a/app/src/main/res/drawable/main_btn_glow.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
- <item android:drawable="@drawable/on_off_btn_start_2_enabled" android:duration="150" />
- <item android:drawable="@drawable/on_off_btn_an4" android:duration="75" />
- <item android:drawable="@drawable/on_off_btn_an3" android:duration="100" />
- <item android:drawable="@drawable/on_off_btn_an2" android:duration="125" />
- <item android:drawable="@drawable/on_off_btn_an1" android:duration="400" />
- <item android:drawable="@drawable/on_off_btn_an2" android:duration="125" />
- <item android:drawable="@drawable/on_off_btn_an3" android:duration="100" />
- <item android:drawable="@drawable/on_off_btn_an4" android:duration="75" />
-</animation-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/main_btn_shadow.xml b/app/src/main/res/drawable/main_btn_shadow.xml
deleted file mode 100644
index 94cf379f..00000000
--- a/app/src/main/res/drawable/main_btn_shadow.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/on_off_btn_start_2_pressed" android:state_pressed="true"/>
- <item android:drawable="@drawable/on_off_btn_start_2_enabled"/>
-</selector> \ No newline at end of file
diff --git a/app/src/main/res/drawable/on_off_btn_an1.png b/app/src/main/res/drawable/on_off_btn_an1.png
deleted file mode 100644
index c80feeb7..00000000
--- a/app/src/main/res/drawable/on_off_btn_an1.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_an2.png b/app/src/main/res/drawable/on_off_btn_an2.png
deleted file mode 100644
index 73f4cb7e..00000000
--- a/app/src/main/res/drawable/on_off_btn_an2.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_an3.png b/app/src/main/res/drawable/on_off_btn_an3.png
deleted file mode 100644
index 98ad0220..00000000
--- a/app/src/main/res/drawable/on_off_btn_an3.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_an4.png b/app/src/main/res/drawable/on_off_btn_an4.png
deleted file mode 100644
index 49070e5f..00000000
--- a/app/src/main/res/drawable/on_off_btn_an4.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_fill.png b/app/src/main/res/drawable/on_off_btn_fill.png
deleted file mode 100644
index 8394ccfb..00000000
--- a/app/src/main/res/drawable/on_off_btn_fill.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_start_2_disabled.png b/app/src/main/res/drawable/on_off_btn_start_2_disabled.png
deleted file mode 100644
index 4675e48d..00000000
--- a/app/src/main/res/drawable/on_off_btn_start_2_disabled.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_start_2_enabled.png b/app/src/main/res/drawable/on_off_btn_start_2_enabled.png
deleted file mode 100644
index 383e1076..00000000
--- a/app/src/main/res/drawable/on_off_btn_start_2_enabled.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_start_2_no_shadow.png b/app/src/main/res/drawable/on_off_btn_start_2_no_shadow.png
deleted file mode 100644
index 941bdef1..00000000
--- a/app/src/main/res/drawable/on_off_btn_start_2_no_shadow.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/on_off_btn_start_2_pressed.png b/app/src/main/res/drawable/on_off_btn_start_2_pressed.png
deleted file mode 100644
index 7ff60cdb..00000000
--- a/app/src/main/res/drawable/on_off_btn_start_2_pressed.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable/progressbar_circle.xml b/app/src/main/res/drawable/progressbar_circle.xml
deleted file mode 100644
index 3d5f6026..00000000
--- a/app/src/main/res/drawable/progressbar_circle.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item>
- <scale
- android:scaleHeight="125%"
- android:scaleWidth="125%"
- android:scaleGravity="center"
- >
- <shape
- android:shape="oval"
- android:useLevel="true"
- >
- <gradient
- android:startColor="@color/colorPrimaryDark"
- android:centerColor="@color/colorPrimary"
- android:endColor="@color/black800_high_transparent"
- android:gradientRadius="100dp"
- android:type="radial"
- />
- </shape>
- </scale>
- </item>
-</layer-list> \ No newline at end of file
diff --git a/app/src/normal/res/layout-port/f_eip.xml b/app/src/main/res/layout-port/f_eip.xml
index eed5fde6..83aabcde 100644
--- a/app/src/normal/res/layout-port/f_eip.xml
+++ b/app/src/main/res/layout-port/f_eip.xml
@@ -20,8 +20,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.175"
- />
+ app:layout_constraintGuide_percent="0.25" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_vertical_outer_left"
@@ -45,7 +44,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.66"
+ app:layout_constraintGuide_percent="0.6"
/>
@@ -63,11 +62,6 @@
android:layout_height="match_parent"
app:srcCompat="@drawable/bg_disconnected"
android:scaleType="fitXY"
- android:layout_marginTop="-300dp"
- android:layout_marginBottom="-300dp"
- android:layout_marginLeft="-300dp"
- android:layout_marginRight="-300dp"
-
/>
@@ -121,7 +115,7 @@
app:layout_constraintLeft_toLeftOf="@id/guideline_vertical_outer_left"
app:layout_constraintRight_toRightOf="@id/guideline_vertical_outer_right"
app:layout_constraintVertical_bias="1"
- app:srcCompat="@drawable/red_mask"
+ app:srcCompat="@drawable/state_disconnected"
/>
<se.leap.bitmaskclient.base.views.MainButton
android:id="@+id/main_button"
diff --git a/app/src/normal/res/layout-xlarge/f_eip.xml b/app/src/main/res/layout-xlarge-port/f_eip.xml
index a4d94394..ee0fbac9 100644
--- a/app/src/normal/res/layout-xlarge/f_eip.xml
+++ b/app/src/main/res/layout-xlarge-port/f_eip.xml
@@ -34,7 +34,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.55" />
+ app:layout_constraintGuide_percent="0.65" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_horizontal_button_top"
@@ -65,10 +65,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
- android:layout_marginLeft="-300dp"
- android:layout_marginRight="-300dp"
- android:layout_marginTop="-300dp"
- android:layout_marginBottom="-300dp"
app:srcCompat="@drawable/bg_disconnected" />
@@ -120,7 +116,7 @@
app:layout_constraintLeft_toLeftOf="@id/guideline_vertical_left"
app:layout_constraintRight_toRightOf="@id/guideline_vertical_right"
app:layout_constraintVertical_bias="1"
- app:srcCompat="@drawable/red_mask"
+ app:srcCompat="@drawable/state_disconnected"
/>
<se.leap.bitmaskclient.base.views.MainButton
diff --git a/app/src/custom/res/layout/f_eip.xml b/app/src/main/res/layout-xlarge/f_eip.xml
index 9a823b65..e413319a 100644
--- a/app/src/custom/res/layout/f_eip.xml
+++ b/app/src/main/res/layout-xlarge/f_eip.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- This is the default layout for landscape, portrait can be found
- in layout-port
+ 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"
@@ -9,24 +9,23 @@
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:id="@+id/guideline_horizontal_center"
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" />
+ app:layout_constraintGuide_percent="0.25"
+ />
<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" />
@@ -35,17 +34,14 @@
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" />
+ app:layout_constraintGuide_percent="0.6" />
<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"
+ app:layout_constraintGuide_percent="0.875"
/>
<androidx.constraintlayout.widget.Guideline
@@ -53,9 +49,8 @@
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"
@@ -70,35 +65,20 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
- app:srcCompat="@drawable/background_eip" />
-
+ app:srcCompat="@drawable/bg_disconnected" />
- <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_constraintTop_toTopOf="parent"
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:padding="@dimen/stdpadding"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
- android:textSize="26sp"
+ android:textSize="45sp"
android:textStyle="bold"
android:textColor="@color/colorEipFragmentFont"
app:layout_constraintDimensionRatio="1:1"
@@ -112,8 +92,8 @@
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"
+ app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_center"
+ android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
android:textStyle="bold"
android:textColor="@color/colorEipFragmentFont"
android:paddingLeft="@dimen/stdpadding"
@@ -127,6 +107,30 @@
android:gravity="center"
/>
+ <androidx.appcompat.widget.AppCompatImageView
+ android:id="@+id/state_view"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toTopOf="@id/guideline_horizontal_bottom"
+ app:layout_constraintTop_toBottomOf="@id/guideline_horizontal_center"
+ app:layout_constraintLeft_toLeftOf="@id/guideline_vertical_left"
+ app:layout_constraintRight_toRightOf="@id/guideline_vertical_right"
+ app:layout_constraintVertical_bias="1"
+ app:srcCompat="@drawable/state_disconnected"
+ />
+
+ <se.leap.bitmaskclient.base.views.MainButton
+ android:id="@+id/main_button"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ app:layout_constraintTop_toBottomOf="@id/guideline_horizontal_bottom"
+ app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_button_top"
+ app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
+ app:layout_constraintStart_toStartOf="@+id/guideline_vertical_left"
+ app:layout_constraintDimensionRatio="1:1"
+ />
+
+
<se.leap.bitmaskclient.base.views.LocationButton
android:id="@+id/gateway_location_button"
android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/allowed_application_layout.xml b/app/src/main/res/layout/allowed_application_layout.xml
index 671a54fc..bb8e4e5d 100644
--- a/app/src/main/res/layout/allowed_application_layout.xml
+++ b/app/src/main/res/layout/allowed_application_layout.xml
@@ -25,7 +25,6 @@
android:layout_rowSpan="1"
android:layout_marginEnd="8dip"
android:scaleType="centerInside"
- tools:background="@drawable/ic_btn_on_connecting"
android:contentDescription="@null" />
<androidx.appcompat.widget.AppCompatTextView
diff --git a/app/src/normal/res/layout/f_eip.xml b/app/src/main/res/layout/f_eip.xml
index 9c921721..1e1f8e41 100644
--- a/app/src/normal/res/layout/f_eip.xml
+++ b/app/src/main/res/layout/f_eip.xml
@@ -40,7 +40,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.45" />
+ app:layout_constraintGuide_percent="0.50" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline_horizontal_button_top"
@@ -71,10 +71,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
- android:layout_marginLeft="-300dp"
- android:layout_marginRight="-300dp"
- android:layout_marginTop="-300dp"
- android:layout_marginBottom="-300dp"
app:srcCompat="@drawable/bg_disconnected" />
@@ -129,14 +125,13 @@
app:layout_constraintLeft_toLeftOf="@id/guideline_vertical_left"
app:layout_constraintRight_toRightOf="@id/guideline_vertical_right"
app:layout_constraintVertical_bias="1"
- app:srcCompat="@drawable/red_mask"
+ app:srcCompat="@drawable/state_disconnected"
/>
<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_bottom"
app:layout_constraintBottom_toTopOf="@+id/guideline_horizontal_button_top"
app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
diff --git a/app/src/main/res/layout/v_location_button.xml b/app/src/main/res/layout/v_location_button.xml
index aa4af10c..8aaf4978 100644
--- a/app/src/main/res/layout/v_location_button.xml
+++ b/app/src/main/res/layout/v_location_button.xml
@@ -5,9 +5,9 @@
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"
- android:layout_height="match_parent"
>
<androidx.appcompat.widget.AppCompatImageView
@@ -38,30 +38,31 @@
android:visibility="gone"
tools:visibility="visible"
/>
-
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/text_location"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_centerInParent="true"
- android:layout_gravity="center_vertical"
- android:layout_toStartOf="@+id/bridge_icn"
- android:layout_toLeftOf="@+id/bridge_icn"
- android:layout_toEndOf="@id/recommended_icn"
- android:layout_toRightOf="@+id/recommended_icn"
- android:ellipsize="end"
- android:gravity="center_vertical"
- android:maxLines="1"
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"
- app:autoSizeMaxTextSize="24sp"
- app:autoSizeMinTextSize="15sp"
- app:autoSizeTextType="uniform"
- tools:text="Seattle along message" />
+ android:textColor="@color/white"
+ tools:text="Seattle along message"
+ />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/bridge_icn"
diff --git a/app/src/main/res/layout/v_main_btn.xml b/app/src/main/res/layout/v_main_btn.xml
deleted file mode 100644
index 3ab62e5a..00000000
--- a/app/src/main/res/layout/v_main_btn.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/vpn_btn_container"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- tools:viewBindingIgnore="true"
- >
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/vpn_btn_glow"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/main_btn_glow"
- tools:visibility="visible"
- android:visibility="gone"
- app:backgroundTint="@color/colorMainBtnHighlight"
- />
-
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/vpn_btn_shadow_dark"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:srcCompat="@drawable/main_btn_shadow"
- android:visibility="visible"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/vpn_btn_shadow_light"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- tools:visibility="visible"
- tools:tint="@color/colorMainBtnHighlight"
- android:visibility="gone"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/vpn_btn_fill"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:srcCompat="@drawable/on_off_btn_start_2_no_shadow"
- android:visibility="visible"
- app:tint="@color/main_button_state_color"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/vpn_btn_fill_overlay"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:srcCompat="@drawable/on_off_btn_fill"
- tools:visibility="visible"
- />
-</RelativeLayout> \ No newline at end of file
diff --git a/app/src/normal/res/layout/v_main_button.xml b/app/src/main/res/layout/v_main_button.xml
index e3f96693..72981238 100644
--- a/app/src/normal/res/layout/v_main_button.xml
+++ b/app/src/main/res/layout/v_main_button.xml
@@ -91,38 +91,6 @@
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"
diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml
new file mode 100644
index 00000000..81d6c19e
--- /dev/null
+++ b/app/src/main/res/values-v31/themes.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
+ <item name="android:windowSplashScreenBackground">@color/colorPrimary</item>
+ <item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>
+ <item name="android:windowSplashScreenBrandingImage">@drawable/splash_branding</item>
+ </style>
+</resources> \ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index c3a519cf..35e49370 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -10,6 +10,7 @@
<color name="colorMainBtnHighlight">#03DAC6</color>
<color name="colorMainBtnError">#eF2222</color>
+ <color name="black800_dark">#1b1b1b</color>
<color name="black800">#424242</color>
<color name="black800_secondary">#3b3b3b</color>
<color name="black800_transparent">#AA424242</color>
@@ -37,7 +38,6 @@
<color name="black_transparent">#20000000</color>
<color name="black_high_transparent">#05000000</color>
-
<color name="colorEipFragmentFont">@color/black800</color>
<color name="colorFontBtn">@color/black800</color>
<color name="colorFontBtnEnabled">@color/white</color>
@@ -57,6 +57,11 @@
<color name="btn_light_transparent">#CCFFFEFE</color>
<color name="btn_light_transparent_dark">#CCCCCBCB</color>
+ <!-- main UI background colors -->
+ <color name="bg_disconnected">#DC6F6B</color>
+ <color name="bg_connecting">#FADD85</color>
+ <color name="bg_running">#CCDCB8</color>
+
<!-- actionbar and status bar colors for different connection states -->
<color name="bg_disconnected_top">#EC6767</color>
<color name="bg_disconnected_top_light_transparent">#CCff9895</color>
@@ -66,8 +71,8 @@
<color name="bg_running_top_light_transparent">#ffffea</color>
<!-- action bar text colors for per state colored action bar -->
- <color name="actionbar_dark_color">@color/black800</color>
- <color name="actionbar_light_color">@color/white</color>
+ <color name="actionbar_connectivity_state_text_color_dark">@color/black800</color>
+ <color name="actionbar_connectivity_state_text_color_light">@color/white</color>
<!-- default action bar colors used in other fragments than EipFragment -->
<color name="colorActionBarTitleFont">@color/white</color>
<color name="colorActionBarSubtitleFont">@color/black800</color>
diff --git a/app/src/normal/res/drawable/background_main.xml b/app/src/normal/res/drawable-anydpi-v24/background_main.xml
index 4b60e9dc..4b60e9dc 100644
--- a/app/src/normal/res/drawable/background_main.xml
+++ b/app/src/normal/res/drawable-anydpi-v24/background_main.xml
diff --git a/app/src/normal/res/drawable-anydpi-v24/bg_connected.xml b/app/src/normal/res/drawable-anydpi-v24/bg_connected.xml
new file mode 100644
index 00000000..19dac103
--- /dev/null
+++ b/app/src/normal/res/drawable-anydpi-v24/bg_connected.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:gravity="fill">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/bg_running"/>
+ </shape>
+ </item>
+ <item
+ android:top="80dp"
+ android:gravity="fill"
+ android:drawable="@drawable/bg_connected_effect"
+ >
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/app/src/normal/res/drawable-anydpi-v24/bg_connected_effect.xml b/app/src/normal/res/drawable-anydpi-v24/bg_connected_effect.xml
new file mode 100644
index 00000000..08ef8172
--- /dev/null
+++ b/app/src/normal/res/drawable-anydpi-v24/bg_connected_effect.xml
@@ -0,0 +1,44 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="411"
+ android:viewportHeight="703"
+ android:width="411dp"
+ android:height="703dp">
+ <path
+ android:pathData="M628.549 500.593C751.417 416.034 654.462 61.8767 411.994 -290.44C169.527 -642.756 -126.637 -859.816 -249.505 -775.257C-372.373 -690.697 -275.418 -336.54 -32.9505 15.7764C209.517 368.093 505.681 585.153 628.549 500.593Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="415.099"
+ android:startY="-19.956"
+ android:endX="685.832"
+ android:endY="373.431"
+ android:tileMode="clamp">
+ <item
+ android:color="#00A6C28A"
+ android:offset="0" />
+ <item
+ android:color="#44669933"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ <path
+ android:pathData="M-186.124 473.683C-63.0333 557.917 232.557 340.077 474.094 -12.8776C715.632 -365.832 811.653 -720.244 688.562 -804.479C565.471 -888.714 269.881 -670.874 28.3433 -317.919C-213.195 35.0357 -309.215 389.448 -186.124 473.683Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="222.826"
+ android:startY="87.2986"
+ android:endX="-46.8688"
+ android:endY="481.398"
+ android:tileMode="clamp">
+ <item
+ android:color="#00A6C28A"
+ android:offset="0" />
+ <item
+ android:color="#44669933"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+</vector>
diff --git a/app/src/normal/res/drawable-anydpi-v24/bg_connecting.xml b/app/src/normal/res/drawable-anydpi-v24/bg_connecting.xml
new file mode 100644
index 00000000..8482d30e
--- /dev/null
+++ b/app/src/normal/res/drawable-anydpi-v24/bg_connecting.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:gravity="fill">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/bg_connecting"/>
+ </shape>
+ </item>
+ <item android:gravity="fill"
+ android:bottom="80dp"
+ android:drawable="@drawable/bg_connecting_effect"
+ >
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/app/src/normal/res/drawable-anydpi-v24/bg_connecting_effect.xml b/app/src/normal/res/drawable-anydpi-v24/bg_connecting_effect.xml
new file mode 100644
index 00000000..fd462a54
--- /dev/null
+++ b/app/src/normal/res/drawable-anydpi-v24/bg_connecting_effect.xml
@@ -0,0 +1,44 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="375"
+ android:viewportHeight="629"
+ android:width="375dp"
+ android:height="629dp">
+ <path
+ android:pathData="M96.6338 471.305C226.719 515.286 420.512 289.654 529.484 -32.658C638.456 -354.97 621.341 -651.909 491.256 -695.89C361.172 -739.871 167.378 -514.239 58.4058 -191.927C-50.5662 130.385 -33.4509 427.324 96.6338 471.305Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="132.695"
+ android:startY="21.7787"
+ android:endX="11.0197"
+ android:endY="381.664"
+ android:tileMode="clamp">
+ <item
+ android:color="#00FFAA33"
+ android:offset="0" />
+ <item
+ android:color="#33FFAA33"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ <path
+ android:pathData="M183.501 628.837C313.565 628.837 419.003 353.304 419.003 13.4182C419.003 -326.468 313.565 -602 183.501 -602C53.4376 -602 -52 -326.468 -52 13.4182C-52 353.304 53.4376 628.837 183.501 628.837Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="183.501"
+ android:startY="255.483"
+ android:endX="183.501"
+ android:endY="634.991"
+ android:tileMode="clamp">
+ <item
+ android:color="#00FFAA33"
+ android:offset="0" />
+ <item
+ android:color="#33FFAA33"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+</vector> \ No newline at end of file
diff --git a/app/src/normal/res/drawable-anydpi-v24/bg_disconnected.xml b/app/src/normal/res/drawable-anydpi-v24/bg_disconnected.xml
new file mode 100644
index 00000000..a5729185
--- /dev/null
+++ b/app/src/normal/res/drawable-anydpi-v24/bg_disconnected.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:gravity="fill">
+ <shape android:shape="rectangle">
+ <solid android:color="@color/bg_disconnected"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="fill"
+ android:drawable="@drawable/bg_disconnected_effect"
+ >
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/app/src/normal/res/drawable-anydpi-v24/bg_disconnected_effect.xml b/app/src/normal/res/drawable-anydpi-v24/bg_disconnected_effect.xml
new file mode 100644
index 00000000..bcc6064a
--- /dev/null
+++ b/app/src/normal/res/drawable-anydpi-v24/bg_disconnected_effect.xml
@@ -0,0 +1,33 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"
+ android:viewportWidth="375"
+ android:viewportHeight="636"
+ android:width="375dp"
+ android:height="636dp"
+ >
+ <group
+ android:scaleY="0.8"
+ android:scaleX="1.25"
+ android:translateX="-46.875"
+ >
+ <path
+ android:pathData="M183.514 458.837C313.578 458.837 419.016 183.305 419.016 -156.582C419.016 -496.468 313.578 -772 183.514 -772C53.4506 -772 -51.9869 -496.468 -51.9869 -156.582C-51.9869 183.305 53.4506 458.837 183.514 458.837Z">
+ <aapt:attr
+ name="android:fillColor">
+ <gradient
+ android:startX="183.514"
+ android:startY="0"
+ android:endX="183.514"
+ android:endY="212"
+ android:tileMode="clamp">
+ <item
+ android:color="#55D3635C"
+ android:offset="0" />
+ <item
+ android:color="#33AF0909"
+ android:offset="1" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ </group>
+
+</vector> \ No newline at end of file
diff --git a/app/src/normal/res/drawable/rotate_progress_image.xml b/app/src/normal/res/drawable-anydpi-v24/rotate_progress_image.xml
index 44a35ba9..44a35ba9 100644
--- a/app/src/normal/res/drawable/rotate_progress_image.xml
+++ b/app/src/normal/res/drawable-anydpi-v24/rotate_progress_image.xml
diff --git a/app/src/normal/res/drawable-anydpi-v24/splash_icon.xml b/app/src/normal/res/drawable-anydpi-v24/splash_icon.xml
new file mode 100644
index 00000000..f882d322
--- /dev/null
+++ b/app/src/normal/res/drawable-anydpi-v24/splash_icon.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:drawable="@drawable/rotate_progress_image"
+ android:height="198dp"
+ android:width="198dp"
+ android:gravity="fill"/>
+ <item
+ android:gravity="center"
+ android:height="52.75dp"
+ android:width="80dp"
+ >
+ <bitmap android:src="@drawable/logo"/>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/app/src/normal/res/drawable-hdpi/bg_connected.png b/app/src/normal/res/drawable-hdpi/bg_connected.png
new file mode 100644
index 00000000..7c64939a
--- /dev/null
+++ b/app/src/normal/res/drawable-hdpi/bg_connected.png
Binary files differ
diff --git a/app/src/normal/res/drawable-hdpi/bg_connecting.png b/app/src/normal/res/drawable-hdpi/bg_connecting.png
new file mode 100644
index 00000000..49620c2c
--- /dev/null
+++ b/app/src/normal/res/drawable-hdpi/bg_connecting.png
Binary files differ
diff --git a/app/src/normal/res/drawable-hdpi/bg_disconnected.png b/app/src/normal/res/drawable-hdpi/bg_disconnected.png
new file mode 100644
index 00000000..36a048d5
--- /dev/null
+++ b/app/src/normal/res/drawable-hdpi/bg_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable-hdpi/rotate_progress_image.png b/app/src/normal/res/drawable-hdpi/rotate_progress_image.png
new file mode 100644
index 00000000..d7c85e02
--- /dev/null
+++ b/app/src/normal/res/drawable-hdpi/rotate_progress_image.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/green_mask.png b/app/src/normal/res/drawable-hdpi/state_connected.png
index fccc060a..fccc060a 100644
--- a/app/src/main/res/drawable-hdpi/green_mask.png
+++ b/app/src/normal/res/drawable-hdpi/state_connected.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/yellow_mask.png b/app/src/normal/res/drawable-hdpi/state_connecting.png
index 72e3ae45..72e3ae45 100644
--- a/app/src/main/res/drawable-hdpi/yellow_mask.png
+++ b/app/src/normal/res/drawable-hdpi/state_connecting.png
Binary files differ
diff --git a/app/src/main/res/drawable-hdpi/red_mask.png b/app/src/normal/res/drawable-hdpi/state_disconnected.png
index d2ef7d99..d2ef7d99 100644
--- a/app/src/main/res/drawable-hdpi/red_mask.png
+++ b/app/src/normal/res/drawable-hdpi/state_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable-xhdpi/ic_splash_background.png b/app/src/normal/res/drawable-xhdpi/background_main.png
index c2135c04..c2135c04 100644
--- a/app/src/normal/res/drawable-xhdpi/ic_splash_background.png
+++ b/app/src/normal/res/drawable-xhdpi/background_main.png
Binary files differ
diff --git a/app/src/normal/res/drawable-xhdpi/bg_connected.png b/app/src/normal/res/drawable-xhdpi/bg_connected.png
new file mode 100644
index 00000000..ca129080
--- /dev/null
+++ b/app/src/normal/res/drawable-xhdpi/bg_connected.png
Binary files differ
diff --git a/app/src/normal/res/drawable-xhdpi/bg_connecting.png b/app/src/normal/res/drawable-xhdpi/bg_connecting.png
new file mode 100644
index 00000000..294e4708
--- /dev/null
+++ b/app/src/normal/res/drawable-xhdpi/bg_connecting.png
Binary files differ
diff --git a/app/src/normal/res/drawable-xhdpi/bg_disconnected.png b/app/src/normal/res/drawable-xhdpi/bg_disconnected.png
new file mode 100644
index 00000000..15bdb108
--- /dev/null
+++ b/app/src/normal/res/drawable-xhdpi/bg_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable-xhdpi/rotate_progress_image.png b/app/src/normal/res/drawable-xhdpi/rotate_progress_image.png
new file mode 100644
index 00000000..d6eb6b65
--- /dev/null
+++ b/app/src/normal/res/drawable-xhdpi/rotate_progress_image.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/green_mask.png b/app/src/normal/res/drawable-xhdpi/state_connected.png
index c852459d..c852459d 100644
--- a/app/src/main/res/drawable-xhdpi/green_mask.png
+++ b/app/src/normal/res/drawable-xhdpi/state_connected.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/yellow_mask.png b/app/src/normal/res/drawable-xhdpi/state_connecting.png
index d81190fe..d81190fe 100644
--- a/app/src/main/res/drawable-xhdpi/yellow_mask.png
+++ b/app/src/normal/res/drawable-xhdpi/state_connecting.png
Binary files differ
diff --git a/app/src/main/res/drawable-xhdpi/red_mask.png b/app/src/normal/res/drawable-xhdpi/state_disconnected.png
index c0d57a03..c0d57a03 100644
--- a/app/src/main/res/drawable-xhdpi/red_mask.png
+++ b/app/src/normal/res/drawable-xhdpi/state_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable-xxhdpi/rotate_progress_image.png b/app/src/normal/res/drawable-xxhdpi/rotate_progress_image.png
new file mode 100644
index 00000000..893b074b
--- /dev/null
+++ b/app/src/normal/res/drawable-xxhdpi/rotate_progress_image.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/green_mask.png b/app/src/normal/res/drawable-xxhdpi/state_connected.png
index 32286177..32286177 100644
--- a/app/src/main/res/drawable-xxhdpi/green_mask.png
+++ b/app/src/normal/res/drawable-xxhdpi/state_connected.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/yellow_mask.png b/app/src/normal/res/drawable-xxhdpi/state_connecting.png
index 75cf3782..75cf3782 100644
--- a/app/src/main/res/drawable-xxhdpi/yellow_mask.png
+++ b/app/src/normal/res/drawable-xxhdpi/state_connecting.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/red_mask.png b/app/src/normal/res/drawable-xxhdpi/state_disconnected.png
index ac560317..ac560317 100644
--- a/app/src/main/res/drawable-xxhdpi/red_mask.png
+++ b/app/src/normal/res/drawable-xxhdpi/state_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable-xxxhdpi/ic_splash_background.png b/app/src/normal/res/drawable-xxxhdpi/background_main.png
index 1b8046fa..1b8046fa 100644
--- a/app/src/normal/res/drawable-xxxhdpi/ic_splash_background.png
+++ b/app/src/normal/res/drawable-xxxhdpi/background_main.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/green_mask.png b/app/src/normal/res/drawable-xxxhdpi/state_connected.png
index f5a5adaf..f5a5adaf 100644
--- a/app/src/main/res/drawable-xxxhdpi/green_mask.png
+++ b/app/src/normal/res/drawable-xxxhdpi/state_connected.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/yellow_mask.png b/app/src/normal/res/drawable-xxxhdpi/state_connecting.png
index 806dcbf4..806dcbf4 100644
--- a/app/src/main/res/drawable-xxxhdpi/yellow_mask.png
+++ b/app/src/normal/res/drawable-xxxhdpi/state_connecting.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxxhdpi/red_mask.png b/app/src/normal/res/drawable-xxxhdpi/state_disconnected.png
index 9e216955..9e216955 100644
--- a/app/src/main/res/drawable-xxxhdpi/red_mask.png
+++ b/app/src/normal/res/drawable-xxxhdpi/state_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable/background_eip.xml b/app/src/normal/res/drawable/background_eip.xml
deleted file mode 100644
index 9b20a8fd..00000000
--- a/app/src/normal/res/drawable/background_eip.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<vector android:height="24dp" android:viewportHeight="100.0"
- android:viewportWidth="100.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
- <path android:pathData="M50,33m-82000,0a82000,82000 0,1 1,164000 0a82000,82000 0,1 1,-164000 0"/>
- <path android:fillAlpha="1" android:fillColor="#b39ddb"
- android:pathData="M50,33 L30664.67,-73860.37A80000,80000 0,0 0,50 -79950Z"
- android:strokeColor="#b39ddb" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#9fa8da"
- android:pathData="m50,33 l56568.54,-56568.54a80000,80000 0,0 0,-25953.87 -17341.82z"
- android:strokeColor="#9fa8da" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#90caf9"
- android:pathData="m50,33 l73910.37,-30614.67a80000,80000 0,0 0,-17341.82 -25953.87z"
- android:strokeColor="#90caf9" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#81d4fa"
- android:pathData="M50,33L80050,50A80000,80000 0,0 0,73960.37 -30564.67Z"
- android:strokeColor="#81d4fa" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#80deea"
- android:pathData="M50,33 L73960.37,30664.67A80000,80000 0,0 0,80050 50Z"
- android:strokeColor="#80deea" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#80cbc4"
- android:pathData="m50,33 l56568.54,56568.54a80000,80000 0,0 0,17341.82 -25953.87z"
- android:strokeColor="#80cbc4" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#a5d6a7"
- android:pathData="m50,33 l30614.67,73910.37a80000,80000 0,0 0,25953.87 -17341.82z"
- android:strokeColor="#a5d6a7" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#c5e1a5"
- android:pathData="M50,33L50,80050A80000,80000 0,0 0,30664.67 73960.37Z"
- android:strokeColor="#c5e1a5" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#e6ee9c"
- android:pathData="M50,33 L-30564.67,73960.37A80000,80000 0,0 0,50 80050Z"
- android:strokeColor="#e6ee9c" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#fff59d"
- android:pathData="m50,33 l-56568.54,56568.54a80000,80000 0,0 0,25953.87 17341.82z"
- android:strokeColor="#fff59d" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#ffe082"
- android:pathData="m50,33 l-73910.37,30614.67a80000,80000 0,0 0,17341.82 25953.87z"
- android:strokeColor="#ffe082" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#ffcc80"
- android:pathData="m50,33l-80000,0a80000,80000 0,0 0,6089.64 30614.67z"
- android:strokeColor="#ffcc80" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#ffab91"
- android:pathData="M50,33 L-73860.37,-30564.67A80000,80000 0,0 0,-79950 50Z"
- android:strokeColor="#ffab91" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#ef9a9a"
- android:pathData="m50,33 l-56568.54,-56568.54a80000,80000 0,0 0,-17341.82 25953.87z"
- android:strokeColor="#ef9a9a" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#f48fb1"
- android:pathData="m50,33 l-30614.67,-73910.37a80000,80000 0,0 0,-25953.87 17341.82z"
- android:strokeColor="#f48fb1" android:strokeWidth="0"/>
- <path android:fillAlpha="1" android:fillColor="#ce93d8"
- android:pathData="m50,33l0,-80000a80000,80000 0,0 0,-30614.67 6089.64z"
- android:strokeColor="#ce93d8" android:strokeWidth="0"/>
-</vector>
diff --git a/app/src/normal/res/drawable-hdpi/ic_splash_background.png b/app/src/normal/res/drawable/background_main.png
index 3e5f7871..3e5f7871 100644
--- a/app/src/normal/res/drawable-hdpi/ic_splash_background.png
+++ b/app/src/normal/res/drawable/background_main.png
Binary files differ
diff --git a/app/src/normal/res/drawable/bg_connected.png b/app/src/normal/res/drawable/bg_connected.png
new file mode 100644
index 00000000..9741dcba
--- /dev/null
+++ b/app/src/normal/res/drawable/bg_connected.png
Binary files differ
diff --git a/app/src/normal/res/drawable/bg_connecting.png b/app/src/normal/res/drawable/bg_connecting.png
new file mode 100644
index 00000000..d85ddd4b
--- /dev/null
+++ b/app/src/normal/res/drawable/bg_connecting.png
Binary files differ
diff --git a/app/src/normal/res/drawable/bg_disconnected.png b/app/src/normal/res/drawable/bg_disconnected.png
new file mode 100644
index 00000000..a22b7097
--- /dev/null
+++ b/app/src/normal/res/drawable/bg_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable/ic_splash_background.xml b/app/src/normal/res/drawable/ic_splash_background.xml
new file mode 100644
index 00000000..aa2618c1
--- /dev/null
+++ b/app/src/normal/res/drawable/ic_splash_background.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:drawable="@drawable/background_main"/>
+</selector> \ No newline at end of file
diff --git a/app/src/normal/res/drawable/rotate_progress_image.png b/app/src/normal/res/drawable/rotate_progress_image.png
new file mode 100644
index 00000000..fe7f3526
--- /dev/null
+++ b/app/src/normal/res/drawable/rotate_progress_image.png
Binary files differ
diff --git a/app/src/normal/res/drawable/splash_branding.xml b/app/src/normal/res/drawable/splash_branding.xml
new file mode 100644
index 00000000..8c4ee21c
--- /dev/null
+++ b/app/src/normal/res/drawable/splash_branding.xml
@@ -0,0 +1,3 @@
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:drawable="@drawable/footer_text_drawable" />
+</layer-list> \ No newline at end of file
diff --git a/app/src/main/res/drawable/green_mask.png b/app/src/normal/res/drawable/state_connected.png
index e515f3f5..e515f3f5 100644
--- a/app/src/main/res/drawable/green_mask.png
+++ b/app/src/normal/res/drawable/state_connected.png
Binary files differ
diff --git a/app/src/main/res/drawable/yellow_mask.png b/app/src/normal/res/drawable/state_connecting.png
index 98dd7978..98dd7978 100644
--- a/app/src/main/res/drawable/yellow_mask.png
+++ b/app/src/normal/res/drawable/state_connecting.png
Binary files differ
diff --git a/app/src/main/res/drawable/red_mask.png b/app/src/normal/res/drawable/state_disconnected.png
index a4bd4a78..a4bd4a78 100644
--- a/app/src/main/res/drawable/red_mask.png
+++ b/app/src/normal/res/drawable/state_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/drawable/state_transition_connected_disconnected.png b/app/src/normal/res/drawable/state_transition_connected_disconnected.png
new file mode 100644
index 00000000..a4bd4a78
--- /dev/null
+++ b/app/src/normal/res/drawable/state_transition_connected_disconnected.png
Binary files differ
diff --git a/app/src/normal/res/layout-xlarge-port/f_eip.xml b/app/src/normal/res/layout-xlarge-port/f_eip.xml
deleted file mode 100644
index ae548c82..00000000
--- a/app/src/normal/res/layout-xlarge-port/f_eip.xml
+++ /dev/null
@@ -1,162 +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"
- >
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_left"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.3"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_top"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.025"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_center"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.175"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_outer_left"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintGuide_percent="0.15"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_vertical_outer_right"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="vertical"
- app:layout_constraintGuide_percent="0.85"
- />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/guideline_horizontal_bottom"
- android:layout_width="0dp"
- android:layout_height="0dp"
- android:orientation="horizontal"
- 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_constraintGuide_percent="0.7"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- app:srcCompat="@drawable/bg_disconnected"
- android:scaleType="fitXY"
- android:layout_marginTop="-300dp"
- android:layout_marginBottom="-300dp"
- android:layout_marginLeft="-300dp"
- android:layout_marginRight="-300dp"
-
- />
-
-
-
- <androidx.appcompat.widget.AppCompatTextView
- android:id="@+id/main_description"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- app:layout_constraintTop_toTopOf="@id/guideline_horizontal_top"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintBottom_toTopOf="@+id/sub_description"
- android:padding="@dimen/activity_margin"
- android:layout_marginTop="@dimen/activity_margin"
- android:textAppearance="@android:style/TextAppearance.Large"
- android:textSize="45sp"
- android:textStyle="bold"
- android:autoSizeMinTextSize="38sp"
- android:autoSizeTextType="uniform"
- 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"
- 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 \n kdjfkj \n kjdfkjdf"
- android:gravity="center"
- android:maxLines="2"
- android:ellipsize="end"
- />
-
- <androidx.appcompat.widget.AppCompatImageView
- android:id="@+id/state_view"
- android:layout_width="0dp"
- android:layout_height="0dp"
- app:layout_constraintBottom_toTopOf="@id/guideline_horizontal_bottom"
- app:layout_constraintTop_toTopOf="@id/guideline_horizontal_center"
- app:layout_constraintLeft_toLeftOf="@id/guideline_vertical_outer_left"
- app:layout_constraintRight_toRightOf="@id/guideline_vertical_outer_right"
- app:layout_constraintVertical_bias="1"
- app:srcCompat="@drawable/red_mask"
- />
- <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_bottom"
- app:layout_constraintBottom_toTopOf="@id/gateway_location_button"
- app:layout_constraintDimensionRatio="1:1"
- app:layout_constraintEnd_toStartOf="@+id/guideline_vertical_right"
- app:layout_constraintStart_toStartOf="@+id/guideline_vertical_left"
- />
-
- <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="parent"
- 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/normal/res/layout/v_location_button.xml b/app/src/normal/res/layout/v_location_button.xml
deleted file mode 100644
index 8aaf4978..00000000
--- a/app/src/normal/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/normal/res/values-v31/themes.xml b/app/src/normal/res/values-v31/themes.xml
new file mode 100644
index 00000000..7ea17424
--- /dev/null
+++ b/app/src/normal/res/values-v31/themes.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
+ <item name="android:windowSplashScreenBackground">@color/white</item>
+ <item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_icon</item>
+ <item name="android:windowSplashScreenBrandingImage">@drawable/splash_branding</item>
+ </style>
+</resources> \ No newline at end of file