Bug Fixes

Bug Fixes
master
msmannan00 2020-12-24 13:55:18 +05:00
parent 5073cb8fb0
commit d6f76b3d2d
42 changed files with 709 additions and 371 deletions

View File

@ -126,7 +126,7 @@
android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize|locale|layoutDirection|smallestScreenSize|screenLayout"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">
android:windowSoftInputMode="adjustPan|adjustResize">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />

View File

@ -179,6 +179,7 @@ class geckoClients
}
void onBackPressed(boolean isFinishAllowed){
mSession.goBackSession();
if(mSession.canGoBack()){
mSession.goBackSession();
}

View File

@ -201,6 +201,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
@Override
public void onPageStart(@NonNull GeckoSession var1, @NonNull String var2) {
mCanGoBack = true;
if(mIsLoaded){
if(!isPageLoading){
mCurrentTitle = "loading";

View File

@ -18,8 +18,10 @@ import android.os.Handler;
import android.speech.RecognizerIntent;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.webkit.URLUtil;
import android.widget.*;
@ -38,6 +40,7 @@ import com.darkweb.genesissearchengine.appManager.landingManager.landingControll
import com.darkweb.genesissearchengine.appManager.languageManager.languageController;
import com.darkweb.genesissearchengine.appManager.orbotLogManager.orbotLogController;
import com.darkweb.genesissearchengine.appManager.orbotManager.orbotController;
import com.darkweb.genesissearchengine.appManager.settingManager.searchEngineManager.settingSearchController;
import com.darkweb.genesissearchengine.appManager.settingManager.settingHomePage.settingController;
import com.darkweb.genesissearchengine.appManager.tabManager.tabController;
import com.darkweb.genesissearchengine.appManager.tabManager.tabRowModel;
@ -49,6 +52,7 @@ import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.dataManager.dataController;
import com.darkweb.genesissearchengine.dataManager.dataEnums;
import com.darkweb.genesissearchengine.helperManager.KeyboardUtils;
import com.darkweb.genesissearchengine.helperManager.SimpleGestureFilter;
import com.darkweb.genesissearchengine.helperManager.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.darkweb.genesissearchengine.pluginManager.pluginController;
@ -77,6 +81,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
private homeViewController mHomeViewController;
private homeModel mHomeModel;
private geckoClients mGeckoClient = null;
private GestureDetector mSwipeDirectionDetector;
/*View Webviews*/
private NestedGeckoView mGeckoView = null;
@ -97,16 +102,20 @@ public class homeController extends AppCompatActivity implements ComponentCallba
private Button mConnectButton;
private Button mNewTab;
private View mFindBar;
private View mSearchEngineBar;
private EditText mFindText;
private TextView mFindCount;
private ImageButton mVoiceInput;
private ImageButton mMenu;
private FrameLayout mNestedScroll;
private ImageView mBlockerFullSceen;
private TextView mCopyright;
/*Redirection Objects*/
private boolean mPageClosed = false;
private boolean isKeyboardOpened = false;
private boolean isSuggestionChanged = false;
private String mSearchBarPreviousText = strings.GENERIC_EMPTY_STR;
/*-------------------------------------------------------INITIALIZATION-------------------------------------------------------*/
@ -133,6 +142,13 @@ public class homeController extends AppCompatActivity implements ComponentCallba
initializeLocalEventHandlers();
initLandingPage();
initLocalLanguage();
onInitResume(savedInstanceState != null);
}
public void onInitResume(boolean pStatus){
if(pStatus){
mSplashScreen.animate().alpha(0);
}
}
public void onInitTheme(){
@ -195,7 +211,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if(status.sSettingIsAppStarted){
mHomeViewController.onPageFinished();
mSplashScreen.setAlpha(0);
mSplashScreen.animate().alpha(0);
mHomeViewController.onProgressBarUpdate(100);
}
}
@ -224,18 +240,21 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mConnectButton = findViewById(R.id.Connect);
mNewTab = findViewById(R.id.pTabCounter);
mFindBar = findViewById(R.id.pFindBar);
mSearchEngineBar = findViewById(R.id.pSearchEngineBar);
mFindText = findViewById(R.id.pFindText);
mFindCount = findViewById(R.id.pFindCount);
mVoiceInput = findViewById(R.id.pVoiceInput);
mMenu = findViewById(R.id.pMenu);
mBlocker = findViewById(R.id.pBlocker);
mNestedScroll = findViewById(R.id.pNestedScroll);
mBlockerFullSceen = findViewById(R.id.pBlockerFullSceen);
mCopyright = findViewById(R.id.pCopyright);
mGeckoView.setSaveEnabled(false);
mGeckoView.setSaveFromParentEnabled(false);
mGeckoClient = new geckoClients();
mHomeViewController.initialization(new homeViewCallback(),this,mNewTab, mWebViewContainer, mLoadingText, mProgressBar, mSearchbar, mSplashScreen, mLoadingIcon, mBannerAds,(ArrayList<historyRowModel>)dataController.getInstance().invokeSuggestion(dataEnums.eSuggestionCommands.M_GET_SUGGESTION, null), mGatewaySplash, mTopBar, mGeckoView, mBackSplash, mConnectButton, mFindBar, mFindText, mFindCount, mTopLayout, mVoiceInput, mMenu, mNestedScroll, mBlocker);
mHomeViewController.initialization(new homeViewCallback(),this,mNewTab, mWebViewContainer, mLoadingText, mProgressBar, mSearchbar, mSplashScreen, mLoadingIcon, mBannerAds,(ArrayList<historyRowModel>)dataController.getInstance().invokeSuggestion(dataEnums.eSuggestionCommands.M_GET_SUGGESTION, null), mGatewaySplash, mTopBar, mGeckoView, mBackSplash, mConnectButton, mFindBar, mFindText, mFindCount, mTopLayout, mVoiceInput, mMenu, mNestedScroll, mBlocker, mBlockerFullSceen, mSearchEngineBar, mCopyright);
mGeckoView.onSetHomeEvent(new nestedGeckoViewCallback());
mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,false);
mGeckoClient.onValidateInitializeFromStartup();
@ -261,30 +280,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
}
float oldTouchValue;
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int action=event.getAction();
switch (action) {
case (MotionEvent.ACTION_DOWN):
oldTouchValue = event.getX();
case (MotionEvent.ACTION_MOVE):
if(mSplashScreen.getVisibility()==View.VISIBLE){
float currentX = event.getX();
if (oldTouchValue < currentX-100)
{
helperMethod.openActivity(orbotController.class, constants.CONST_LIST_HISTORY, homeController.this,true);
}
else if (oldTouchValue > currentX+100 )
{
helperMethod.openActivity(orbotLogController.class, constants.CONST_LIST_HISTORY, homeController.this,true);
}
}
default:
return super.onTouchEvent(event);
}
mSwipeDirectionDetector.onTouchEvent(event);
return super.dispatchTouchEvent(event);
}
public void initPreFixes() {
@ -358,7 +357,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGeckoView.setSession(mTempSession);
mHomeViewController.onClearSelections(false);
mHomeViewController.onUpdateSearchBar(mTempSession.getCurrentURL(),false);
mHomeViewController.onUpdateSearchBar(mTempSession.getCurrentURL(),false,true);
if(mTempSession.getProgress()>0 && mTempSession.getProgress()<100){
mHomeViewController.onProgressBarUpdate(mTempSession.getProgress());
}else {
@ -428,7 +427,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_GO || actionId == EditorInfo.IME_ACTION_DONE)
{
onSearchBarInvoked(v);
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),true);
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),true,true);
mHomeViewController.onClearSelections(true);
mGeckoClient.setLoading(true);
final Handler handler = new Handler();
@ -456,7 +455,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
helperMethod.hideKeyboard(homeController.this);
status.sSettingIsAppStarted = true;
pluginController.getInstance().onResetMessage();
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),false);
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),false,true);
}
});
@ -477,17 +476,35 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mSearchbar.setOnFocusChangeListener((v, hasFocus) -> {
if(!hasFocus)
{
mHomeViewController.onUpdateSearchEngineBar(false);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
mHomeViewController.initSearchBarFocus(false);
if(!mGeckoClient.isLoading()){
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),false);
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),false,true);
}
if(isSuggestionChanged){
isSuggestionChanged = false;
mHomeViewController.initializeSuggestionView((ArrayList<historyRowModel>)dataController.getInstance().invokeSuggestion(dataEnums.eSuggestionCommands.M_GET_SUGGESTION, null));
}
}else {
mHomeViewController.onUpdateSearchEngineBar(true);
mHomeViewController.initSearchBarFocus(true);
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),true);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
mSearchbar.setText(strings.GENERIC_EMPTY_STR);
}
});
mSwipeDirectionDetector=new GestureDetector(this,new SimpleGestureFilter(){
@Override
public boolean onSwipe(Direction direction) {
if (direction==Direction.left){
helperMethod.openActivity(orbotLogController.class, constants.CONST_LIST_HISTORY, homeController.this, true);
}
else if (direction==Direction.right){
helperMethod.openActivity(orbotController.class, constants.CONST_LIST_HISTORY, homeController.this, true);
}
return true;
}
});
@ -501,15 +518,20 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if(validated_url!=null){
url = validated_url;
}
mHomeViewController.onUpdateSearchBar(url,false);
mHomeViewController.onUpdateSearchBar(url,false,true);
onLoadURL(url);
}
public void onSuggestionInvoked(View view){
String val = ((TextView)view.findViewById(R.id.hintCompletionUrl)).getText().toString();
onLoadURL(val);
mSearchbar.setSelection(0);
mHomeViewController.onUpdateSearchBar(val,false);
//String val = ((TextView)view.findViewById(R.id.hintCompletionUrl)).getText().toString();
//onLoadURL(val);
//mSearchbar.setSelection(0);
//mHomeViewController.onUpdateSearchBar(val,false,true);
}
public void onSuggestionMove(View view){
String val = ((ImageButton)view).getTag().toString();
mHomeViewController.onUpdateSearchBar(val,false,false);
}
public void applyTheme(){
@ -532,10 +554,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba
initializeGeckoView(true, true);
if(status.sOpenURLInNewTab){
onLoadURL(helperMethod.getDomainName(status.sSettingSearchStatus));
mHomeViewController. onUpdateSearchBar(helperMethod.getDomainName(status.sSettingSearchStatus),false);
mHomeViewController. onUpdateSearchBar(helperMethod.getDomainName(status.sSettingSearchStatus),false,true);
}else {
onLoadURL("about:blank");
mHomeViewController. onUpdateSearchBar(strings.HOME_BLANK_PAGE,false);
mHomeViewController. onUpdateSearchBar(strings.HOME_BLANK_PAGE,false,true);
}
mHomeViewController.progressBarReset();
mHomeViewController.onNewTab(isKeyboardOpened,isKeyboardOpenedTemp);
@ -544,13 +566,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void onOpenTabViewBoundary(View view){
mGeckoClient.onRedrawPixel();
final Handler handler = new Handler();
mNewTab.setPressed(true);
handler.postDelayed(() ->
{
helperMethod.openActivity(tabController.class, constants.CONST_LIST_HISTORY, homeController.this,true);
overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out);
}, 100);
mGeckoClient.onRedrawPixel();
helperMethod.openActivity(tabController.class, constants.CONST_LIST_HISTORY, homeController.this,true);
overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out);
}
public void onNotificationInvoked(String message,enums.etype e_type){
@ -580,6 +599,9 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if(mFindBar.getVisibility() == View.VISIBLE){
mHomeViewController.onUpdateFindBar(false);
}
else if(mSearchEngineBar.getVisibility() == View.VISIBLE){
mHomeViewController.onUpdateSearchEngineBar(false);
}
else if(mGeckoClient.getFullScreenStatus()){
mGeckoClient.onBackPressed(true);
mHomeViewController.onClearSelections(true);
@ -656,9 +678,15 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
if(status.sSettingIsAppStarted){
onStartApplication(null);
tabRowModel model = (tabRowModel)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_CURRENT_TAB, null);
if(model!=null){
onLoadTab(model.getSession(),true);
}
}
if((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null)<=0){
//onNewTab(false, false);
if(!mSearchBarPreviousText.equals(strings.GENERIC_EMPTY_STR)){
mSearchbar.setText(mSearchBarPreviousText);
mSearchbar.requestFocus();
mSearchBarPreviousText = strings.GENERIC_EMPTY_STR;
}
super.onResume();
@ -670,7 +698,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if(resultCode == RESULT_OK && null != data){
onSearchBarInvoked(mSearchbar);
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
mHomeViewController.onUpdateSearchBar(result.get(0),false);
mHomeViewController.onUpdateSearchBar(result.get(0),false,true);
helperMethod.hideKeyboard(homeController.this);
mGeckoClient.setLoading(true);
final Handler handler = new Handler();
@ -752,7 +780,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
initializeGeckoView(true, true);
mHomeViewController.progressBarReset();
mHomeViewController.onNewTab(false,isKeyboardOpened);
mHomeViewController.onUpdateSearchBar(url,false);
mHomeViewController.onUpdateSearchBar(url,false,true);
mGeckoClient.loadURL(url);
}
@ -799,6 +827,11 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGeckoClient.getSession().findInPage(mFindText.getText().toString(), GeckoSession.FINDER_FIND_MATCH_CASE & GeckoSession.FINDER_DISPLAY_HIGHLIGHT_ALL);
}
public void onOpenSearchEngine(View view){
mSearchBarPreviousText = mSearchbar.getText().toString();
helperMethod.openActivity(settingSearchController.class,constants.CONST_LIST_HISTORY, homeController.this,true);
}
public void onFindPrev(View view){
mFindText.setText("0/0");
mGeckoClient.getSession().findInPage(mFindText.getText().toString(), GeckoSession.FINDER_FIND_BACKWARDS & GeckoSession.FINDER_DISPLAY_HIGHLIGHT_ALL);
@ -827,6 +860,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
else if (menuId == R.id.menu9) {
helperMethod.hideKeyboard(this);
mGeckoClient.onRedrawPixel();
helperMethod.openActivity(tabController.class, constants.CONST_LIST_HISTORY, homeController.this,true);
}
else if (menuId == R.id.menu8) {
@ -937,7 +971,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.onSetBannerAdMargin((boolean)data.get(0),pluginController.getInstance().isAdvertLoaded());
}
else if(e_type.equals(enums.etype.on_url_load)){
mHomeViewController.onUpdateLogs("Starting | Genesis Search");
onOpenLinkNewTab(data.get(0).toString());
onLoadURL(data.get(0).toString());
}
else if(e_type.equals(enums.etype.recheck_orbot)){
@ -982,10 +1016,9 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.onProgressBarUpdate((int)data.get(0));
}
else if(e_type.equals(enums.etype.ON_UPDATE_TITLE_BAR)){
mHomeViewController.onUpdateTitleBar((boolean)data.get(0));
}
else if(e_type.equals(enums.etype.on_url_load)){
mHomeViewController.onUpdateSearchBar(dataToStr(data.get(0),mGeckoClient.getSession().getCurrentURL()),false);
mHomeViewController.onUpdateSearchBar(dataToStr(data.get(0),mGeckoClient.getSession().getCurrentURL()),false,true);
}
else if(e_type.equals(enums.etype.back_list_empty)){
if((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null)>1){
@ -1039,10 +1072,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba
pluginController.getInstance().setLanguage();
initLocalLanguage();
mHomeViewController.onPageFinished();
mHomeViewController.onUpdateSearchBar(dataToStr(data.get(0),mGeckoClient.getSession().getCurrentURL()),false);
mHomeViewController.onUpdateSearchBar(dataToStr(data.get(0),mGeckoClient.getSession().getCurrentURL()),false,true);
}
else if(e_type.equals(enums.etype.search_update)){
mHomeViewController.onUpdateSearchBar(dataToStr(data.get(0),mGeckoClient.getSession().getCurrentURL()),false);
mHomeViewController.onUpdateSearchBar(dataToStr(data.get(0),mGeckoClient.getSession().getCurrentURL()),false, true);
}
else if(e_type.equals(enums.etype.download_file_popup)){
pluginController.getInstance().MessageManagerHandler(homeController.this,Collections.singletonList(dataToStr(data.get(0))),enums.eMessageEnums.M_DOWNLOAD_FILE);
@ -1083,10 +1116,9 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
else if(e_type.equals(dataEnums.eTabCommands.M_UPDATE_PIXEL)){
try{
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_UPDATE_PIXEL, Arrays.asList(data.get(1), mGeckoView.capturePixels()));
}catch (Exception ignored){
}catch (Exception EX){
EX.printStackTrace();
}
}
else if(e_type.equals(enums.etype.FINDER_RESULT_CALLBACK)){

View File

@ -10,6 +10,7 @@ import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
@ -21,9 +22,9 @@ import android.view.ViewGroup;
import android.view.ViewOutlineProvider;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.Transformation;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.*;
@ -31,10 +32,7 @@ import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.content.ContextCompat;
import androidx.core.widget.NestedScrollView;
import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel;
import com.darkweb.genesissearchengine.constants.*;
import com.darkweb.genesissearchengine.dataManager.dataController;
@ -55,7 +53,6 @@ import java.util.Collections;
import java.util.Objects;
import java.util.concurrent.Callable;
import static android.content.Context.LAYOUT_INFLATER_SERVICE;
import static androidx.appcompat.widget.ListPopupWindow.WRAP_CONTENT;
import static org.mozilla.geckoview.GeckoSessionSettings.USER_AGENT_MODE_DESKTOP;
class homeViewController
@ -81,6 +78,7 @@ class homeViewController
private Button mNewTab;
private PopupWindow popupWindow = null;
private View mFindBar;
private View mSearchEngineBar;
private EditText mFindText;
private TextView mFindCount;
private FrameLayout mTopLayout;
@ -88,12 +86,14 @@ class homeViewController
private ImageButton mMenu;
private FrameLayout mNestedScroll;
private ImageView mBlocker;
private ImageView mBlockerFullSceen;
private TextView mCopyright;
/*Local Variables*/
private Callable<String> mLogs = null;
private boolean isLandscape = false;
void initialization(eventObserver.eventListener event, AppCompatActivity context, Button mNewTab, FrameLayout webviewContainer, TextView loadingText, AnimatedProgressBar progressBar, AutoCompleteTextView searchbar, ConstraintLayout splashScreen, ImageView loading, AdView banner_ads, ArrayList<historyRowModel> suggestions, ImageButton gateway_splash, LinearLayout top_bar, GeckoView gecko_view, ImageView backsplash, Button connect_button, View pFindBar, EditText pFindText, TextView pFindCount, FrameLayout pTopLayout, ImageButton pVoiceInput, ImageButton pMenu, FrameLayout pNestedScroll, ImageView pBlocker){
void initialization(eventObserver.eventListener event, AppCompatActivity context, Button mNewTab, FrameLayout webviewContainer, TextView loadingText, AnimatedProgressBar progressBar, AutoCompleteTextView searchbar, ConstraintLayout splashScreen, ImageView loading, AdView banner_ads, ArrayList<historyRowModel> suggestions, ImageButton gateway_splash, LinearLayout top_bar, GeckoView gecko_view, ImageView backsplash, Button connect_button, View pFindBar, EditText pFindText, TextView pFindCount, FrameLayout pTopLayout, ImageButton pVoiceInput, ImageButton pMenu, FrameLayout pNestedScroll, ImageView pBlocker, ImageView pBlockerFullSceen, View mSearchEngineBar, TextView pCopyright){
this.mContext = context;
this.mProgressBar = progressBar;
this.mSearchbar = searchbar;
@ -118,6 +118,9 @@ class homeViewController
this.mMenu = pMenu;
this.mNestedScroll = pNestedScroll;
this.mBlocker = pBlocker;
this.mBlockerFullSceen = pBlockerFullSceen;
this.mSearchEngineBar = mSearchEngineBar;
this.mCopyright = pCopyright;
initSplashScreen();
initializeSuggestionView(suggestions);
@ -216,7 +219,7 @@ class homeViewController
animatedColor ThreeToFour = new animatedColor(ContextCompat.getColor(mContext, R.color.c_background), ContextCompat.getColor(mContext, R.color.c_background));
ValueAnimator animator = ObjectAnimator.ofFloat(0f, 1f).setDuration(0);
animator.setStartDelay(600);
animator.setStartDelay(1200);
animator.addUpdateListener(animation ->
{
float v = (float) animation.getAnimatedValue();
@ -269,25 +272,15 @@ class homeViewController
return;
}
autoCompleteAdapter suggestionAdapter = new autoCompleteAdapter(mContext, R.layout.hint_view, (ArrayList<historyRowModel>) suggestions.clone());
int width = Math.round(helperMethod.screenWidth());
mSearchbar.setThreshold(2);
mSearchbar.setAdapter(suggestionAdapter);
mSearchbar.setDropDownVerticalOffset(helperMethod.pxFromDp(8));
mSearchbar.setDropDownVerticalOffset(helperMethod.pxFromDp(0));
mSearchbar.setDropDownWidth(width);
mSearchbar.setDropDownHeight(WRAP_CONTENT);
Drawable drawable;
Resources res = mContext.getResources();
try {
drawable = Drawable.createFromXml(res, res.getXml(R.xml.hox_rounded_corner_suggestion));
mSearchbar.setDropDownBackgroundDrawable(drawable);
mSearchbar.setOutlineProvider(ViewOutlineProvider.BACKGROUND);
mSearchbar.setClipToOutline(true);
} catch (Exception ignored) {
}
mSearchbar.setDropDownBackgroundDrawable(new ColorDrawable(mContext.getResources().getColor(R.color.c_background)));
mSearchbar.setDropDownHeight(helperMethod.getScreenHeight(mContext)*75/100);
mSearchbar.setInputType(EditorInfo.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
}
@ -297,18 +290,23 @@ class homeViewController
mLoading.setAnimation(helperMethod.getRotationAnimation());
mLoadingText.setAlpha(0);
mLoadingText.setVisibility(View.VISIBLE);
mLoadingText.animate().alpha(1);
mLoadingText.animate().setStartDelay(0).alpha(1);
mConnectButton.setClickable(false);
mGatewaySplash.setClickable(false);
mBlocker.setClickable(true);
mBlocker.setFocusable(true);
}
void initHomePage(){
mConnectButton.setClickable(false);
mGatewaySplash.setClickable(false);
mConnectButton.animate().alpha(0.4f).withEndAction(this::initSplashLoading);
mGatewaySplash.animate().alpha(0.4f);
mConnectButton.animate().setDuration(200).alpha(0.4f).withEndAction(() -> {
mCopyright.setVisibility(View.GONE);
initSplashLoading();
});
mGatewaySplash.animate().setDuration(200).alpha(0.4f);
}
private void initSplashScreen(){
@ -327,7 +325,7 @@ class homeViewController
void initProxyLoading(Callable<String> logs){
this.mLogs = logs;
if(mSplashScreen.getAlpha()==1){
if(mSplashScreen.getVisibility()==View.VISIBLE){
new Thread(){
public void run(){
AppCompatActivity temp_context = mContext;
@ -365,9 +363,9 @@ class homeViewController
}
private void splashScreenDisable(){
mTopBar.setAlpha(1);
if(mSplashScreen.getAlpha()>=1)
if(mSplashScreen.getVisibility()==View.VISIBLE)
{
mSplashScreen.animate().setDuration(300).setStartDelay(500).alpha(0).withEndAction((this::triggerPostUI));
mSplashScreen.animate().setStartDelay(1000).setDuration(500).alpha(0).withEndAction((this::triggerPostUI));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
initStatusBarColor();
}
@ -516,7 +514,7 @@ class homeViewController
private Handler searchBarUpdateHandler = new Handler();
private String handlerLocalUrl = "";
void onUpdateSearchBar(String url,boolean showProtocol){
void onUpdateSearchBar(String url,boolean showProtocol, boolean pClearText){
int delay = 0;
handlerLocalUrl = url;
@ -528,7 +526,7 @@ class homeViewController
searchBarUpdateHandler.postDelayed(() ->
{
searchBarUpdateHandler.removeMessages(100);
triggerUpdateSearchBar(handlerLocalUrl,showProtocol);
triggerUpdateSearchBar(handlerLocalUrl,showProtocol, pClearText);
}, delay);
}
@ -562,7 +560,22 @@ class homeViewController
}
}
private void triggerUpdateSearchBar(String url, boolean showProtocol){
public void onUpdateSearchEngineBar(boolean pStatus)
{
mSearchEngineBar.animate().cancel();
if(pStatus){
mSearchEngineBar.setAlpha(0f);
mSearchEngineBar.animate().setDuration(300).alpha(1);
mSearchEngineBar.setVisibility(View.VISIBLE);
}else {
mSearchEngineBar.animate().setDuration(300).alpha(0).withEndAction(() -> {
mSearchEngineBar.setAlpha(0f);
mSearchEngineBar.setVisibility(View.GONE);
});
}
}
private void triggerUpdateSearchBar(String url, boolean showProtocol, boolean pClearText){
if (mSearchbar == null || url==null)
{
return;
@ -608,22 +621,10 @@ class homeViewController
void onNewTab(boolean keyboard,boolean isKeyboardOpen){
if(keyboard){
if(!isKeyboardOpen){
final Handler handler = new Handler();
handler.postDelayed(() ->
{
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
Objects.requireNonNull(imm).toggleSoftInput(InputMethodManager.RESULT_UNCHANGED_SHOWN, 0);
}, 250);
}
mSearchbar.requestFocus();
mSearchbar.selectAll();
}
}
Handler mProgressHandler = new Handler();
Runnable mProgressBarRunnable = null;
void onUpdateLogs(String log){
mLoadingText.setText(log);
@ -635,62 +636,59 @@ class homeViewController
}
void onProgressBarUpdate(int value){
if(mProgressBarRunnable!=null){
mProgressHandler.removeCallbacks(mProgressBarRunnable);
mProgressBar.setAlpha(1f);
mProgressBar.setVisibility(View.VISIBLE);
ProgressBarAnimation mProgressAnimation = new ProgressBarAnimation(mProgressBar, 1000);
mProgressAnimation.setProgress(value*100);
}
public class ProgressBarAnimation extends Animation {
private ProgressBar mProgressBar;
private int mTo;
private int mFrom;
private long mStepDuration;
/**
* @param fullDuration - time required to fill progress from 0% to 100%
*/
public ProgressBarAnimation(ProgressBar progressBar, long fullDuration) {
super();
mProgressBar = progressBar;
mStepDuration = fullDuration / progressBar.getMax();
}
if(mSplashScreen.getAlpha()>0){
mProgressBar.setProgress(value*100);
}
if(value==100){
mProgressBar.setAlpha(1f);
setProgressAnimate(mProgressBar,value);
mProgressBarRunnable = () -> {
animation.removeAllListeners();
animation.end();
animation.cancel();
public void setProgress(int progress) {
if(progress == 10000){
mProgressBar.animate().setStartDelay(100).alpha(0);
}else {
mProgressBar.animate().cancel();
mProgressBar.animate().alpha(0);
};
mProgressHandler.postDelayed(mProgressBarRunnable, 250);
mProgressBar.setAlpha(1);
}
return;
if (progress < 0) {
progress = 0;
}
if (progress > mProgressBar.getMax()) {
progress = mProgressBar.getMax();
}
mTo = progress;
mFrom = mProgressBar.getProgress();
setDuration(Math.abs(mTo - mFrom) * mStepDuration);
mProgressBar.startAnimation(this);
}
else if(mSplashScreen.getAlpha()==0) {
mProgressBar.setVisibility(View.VISIBLE);
mProgressBar.animate().cancel();
mProgressBar.animate().setStartDelay(50).alpha(1);
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float value = mFrom + (mTo - mFrom) * interpolatedTime;
mProgressBar.setProgress((int) value);
}
setProgressAnimate(mProgressBar,value);
}
private ObjectAnimator animation = null;
private void setProgressAnimate(ProgressBar pb, int progressTo)
{
int progress = 0;
if((progressTo)<mProgressBar.getProgress()){
progress = 5;
}
if(animation!=null){
animation.removeAllListeners();
animation.end();
animation.cancel();
}
animation = ObjectAnimator.ofInt(pb, "progress", pb.getProgress(), progressTo * 100);
animation.setDuration(progress);
animation.setInterpolator(new DecelerateInterpolator());
animation.setAutoCancel(true);
animation.start();
}
void onUpdateTitleBar(boolean pStatus){
}
void onClearSelections(boolean hideKeyboard){
mSearchbar.setFocusable(false);
mSearchbar.setFocusableInTouchMode(true);
@ -716,30 +714,30 @@ class homeViewController
void onFullScreenUpdate(boolean status){
int value = !status ? 1 : 0;
this.mBlocker.setVisibility(View.VISIBLE);
this.mBlocker.setAlpha(1f);
if(status) {
defaultFlag = mContext.getWindow().getDecorView().getSystemUiVisibility();
final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
mContext.getWindow().getDecorView().setSystemUiVisibility(flags);
}else {
this.mBlockerFullSceen.setVisibility(View.VISIBLE);
this.mBlockerFullSceen.setAlpha(1f);
}
final Handler handler = new Handler();
handler.postDelayed(() ->
{
mTopBar.setClickable(!status);
disableEnableControls(!status, mTopBar);
mTopBar.setAlpha(value);
mBannerAds.setVisibility(View.GONE);
if(status){
this.mBlockerFullSceen.setVisibility(View.VISIBLE);
this.mBlockerFullSceen.setAlpha(0f);
this.mBlockerFullSceen.animate().setStartDelay(0).setDuration(200).alpha(1).withEndAction(() -> {
mTopBar.setClickable(!status);
disableEnableControls(!status, mTopBar);
mTopBar.setAlpha(value);
mBannerAds.setVisibility(View.GONE);
defaultFlag = mContext.getWindow().getDecorView().getSystemUiVisibility();
final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
mContext.getWindow().getDecorView().setSystemUiVisibility(flags);
if(status){
mProgressBar.setVisibility(View.GONE);
mTopBar.setVisibility(View.GONE);
mBannerAds.setVisibility(View.GONE);
@ -755,38 +753,43 @@ class homeViewController
com.darkweb.genesissearchengine.constants.status.sFullScreenBrowsing = false;
initTopBarPadding();
this.mBlocker.animate().setStartDelay(250).setDuration(200).alpha(0).withEndAction(() -> {
mBlocker.setVisibility(View.GONE);
this.mBlockerFullSceen.animate().setStartDelay(100).setDuration(200).alpha(0).withEndAction(() -> {
mBlockerFullSceen.setVisibility(View.GONE);
});
});
}
else {
mTopBar.setClickable(!status);
disableEnableControls(!status, mTopBar);
mTopBar.setAlpha(value);
mBannerAds.setVisibility(View.GONE);
mProgressBar.setVisibility(View.VISIBLE);
mTopBar.setVisibility(View.VISIBLE);
mBannerAds.setVisibility(View.GONE);
mEvent.invokeObserver(Collections.singletonList(!isLandscape), enums.etype.on_init_ads);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mWebviewContainer.getLayoutParams();
params.setMargins(0, 0, 0,0);
mWebviewContainer.setLayoutParams(params);
ViewGroup.MarginLayoutParams params1 = (ViewGroup.MarginLayoutParams) mWebviewContainer.getLayoutParams();
params1.setMargins(0, 0, 0,helperMethod.pxFromDp(0));
mGeckoView.setLayoutParams(params1);
com.darkweb.genesissearchengine.constants.status.sFullScreenBrowsing = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING,true));
initTopBarPadding();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mContext.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}else {
mContext.getWindow().setStatusBarColor(mContext.getResources().getColor(R.color.blue_dark));
}
else {
mProgressBar.setVisibility(View.VISIBLE);
mTopBar.setVisibility(View.VISIBLE);
mBannerAds.setVisibility(View.GONE);
mEvent.invokeObserver(Collections.singletonList(!isLandscape), enums.etype.on_init_ads);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mWebviewContainer.getLayoutParams();
params.setMargins(0, 0, 0,0);
mWebviewContainer.setLayoutParams(params);
ViewGroup.MarginLayoutParams params1 = (ViewGroup.MarginLayoutParams) mWebviewContainer.getLayoutParams();
params1.setMargins(0, 0, 0,helperMethod.pxFromDp(60));
mGeckoView.setLayoutParams(params1);
com.darkweb.genesissearchengine.constants.status.sFullScreenBrowsing = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING,true));
initTopBarPadding();
this.mBlocker.animate().setStartDelay(250).setDuration(200).alpha(0).withEndAction(() -> {
mBlocker.setVisibility(View.GONE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mContext.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}else {
mContext.getWindow().setStatusBarColor(mContext.getResources().getColor(R.color.blue_dark));
}
});
}
}, 200);
this.mBlockerFullSceen.animate().setStartDelay(0).setDuration(200).alpha(0).withEndAction(() -> {
mBlockerFullSceen.setVisibility(View.GONE);
});
}
}
@ -849,6 +852,9 @@ class homeViewController
}
}
}
if(msg.what == messages.MESSAGE_PROGRESSBAR_VALIDATE)
{
}
}
};
}

View File

@ -1,21 +1,21 @@
package com.darkweb.genesissearchengine.appManager.orbotLogManager;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.MotionEventCompat;
import androidx.core.widget.NestedScrollView;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.appManager.helpManager.helpController;
import com.darkweb.genesissearchengine.appManager.settingManager.logManager.settingLogController;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.helperManager.SimpleGestureFilter;
import com.darkweb.genesissearchengine.helperManager.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.example.myapplication.R;
@ -36,19 +36,22 @@ public class orbotLogController extends AppCompatActivity {
private TextView mLogs;
private boolean mActivityClosed = false;
int mLogCounter = 0;
private int mLogCounter = 0;
private GestureDetector mSwipeDirectionDetector;
/* INITIALIZATIONS */
@Override
protected void onCreate(Bundle savedInstanceState) {
overridePendingTransition(R.anim.push_anim_out_reverse, R.anim.push_anim_in_reverse);
super.onCreate(savedInstanceState);
setContentView(R.layout.orbot_log_view);
viewsInitializations();
onUpdateLogs();
initializeLogs();
onScrollListener();
onInitListener();
}
public void viewsInitializations() {
@ -60,6 +63,7 @@ public class orbotLogController extends AppCompatActivity {
activityContextManager.getInstance().setOrbotLogController(this);
mOrbotViewController = new orbotLogViewController(this, mLogs, mRecycleView);
mOrbotModel = new orbotLogModel();
}
public void initializeLogs(){
@ -90,7 +94,7 @@ public class orbotLogController extends AppCompatActivity {
/* LISTENERS */
private void onScrollListener(){
private void onInitListener(){
mMainScroll.getViewTreeObserver().addOnScrollChangedListener(() -> {
int scrollY = mMainScroll.getScrollY();
if(scrollY>0){
@ -103,6 +107,18 @@ public class orbotLogController extends AppCompatActivity {
mFloatingScroller.animate().alpha(0).withEndAction(() -> mFloatingScroller.setVisibility(View.GONE));
}
});
mSwipeDirectionDetector=new GestureDetector(this,new SimpleGestureFilter(){
@Override
public boolean onSwipe(Direction direction) {
if (direction==Direction.left || direction==Direction.right){
finish();
overridePendingTransition(R.anim.push_anim_in, R.anim.push_anim_out);
}
return true;
}
});
}
public void onUpdateLogs(){
@ -161,6 +177,14 @@ public class orbotLogController extends AppCompatActivity {
}
}
/* Helper Methods */
public void onClose(View view){
finish();
overridePendingTransition(R.anim.push_anim_in, R.anim.push_anim_out);
mActivityClosed = true;
}
/* LOCAL OVERRIDES */
@Override
@ -178,42 +202,13 @@ public class orbotLogController extends AppCompatActivity {
@Override
public void onBackPressed() {
finish();
mActivityClosed = true;
onClose(null);
}
/* Helper Methods */
public void openLogSettings(View view) {
helperMethod.openActivity(settingLogController.class, constants.CONST_LIST_HISTORY, this,true);
}
public void onClose(View view){
finish();
mActivityClosed = true;
}
float oldTouchValue;
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int action=event.getAction();
switch (action) {
case (MotionEvent.ACTION_DOWN):
oldTouchValue = event.getX();
case (MotionEvent.ACTION_MOVE):
float currentX = event.getX();
if (oldTouchValue < currentX-100)
{
finish();
}else {
return super.onTouchEvent(event);
}
default:
return super.onTouchEvent(event);
}
mSwipeDirectionDetector.onTouchEvent(event);
return super.dispatchTouchEvent(event);
}
}

View File

@ -1,22 +1,20 @@
package com.darkweb.genesissearchengine.appManager.orbotManager;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.MotionEventCompat;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.appManager.bridgeManager.bridgeController;
import com.darkweb.genesissearchengine.appManager.helpManager.helpController;
import com.darkweb.genesissearchengine.appManager.homeManager.homeController;
import com.darkweb.genesissearchengine.appManager.orbotLogManager.orbotLogController;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.keys;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.dataManager.dataController;
import com.darkweb.genesissearchengine.dataManager.dataEnums;
import com.darkweb.genesissearchengine.helperManager.SimpleGestureFilter;
import com.darkweb.genesissearchengine.helperManager.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.darkweb.genesissearchengine.pluginManager.pluginController;
@ -35,16 +33,20 @@ public class orbotController extends AppCompatActivity {
private SwitchMaterial mBridgeSwitch;
private SwitchMaterial mVpnSwitch;
private LinearLayout mCustomizableBridgeMenu;
private GestureDetector mSwipeDirectionDetector;
/* INITIALIZATIONS */
@Override
protected void onCreate(Bundle savedInstanceState) {
overridePendingTransition(R.anim.push_anim_in, R.anim.push_anim_out);
pluginController.getInstance().onCreate(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.orbot_settings_view);
viewsInitializations();
onInitListener();
}
public void viewsInitializations() {
@ -63,6 +65,19 @@ public class orbotController extends AppCompatActivity {
/* LISTENERS */
private void onInitListener(){
mSwipeDirectionDetector=new GestureDetector(this,new SimpleGestureFilter(){
@Override
public boolean onSwipe(Direction direction) {
if (direction==Direction.left || direction==Direction.right){
onClose(null);
}
return true;
}
});
}
public class orbotModelCallback implements eventObserver.eventListener{
@Override
public Object invokeObserver(List<Object> data, Object e_type)
@ -87,6 +102,11 @@ public class orbotController extends AppCompatActivity {
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.BRIDGE_VPN_ENABLED,status.sBridgeVPNStatus));
}
public void onClose(View view){
finish();
overridePendingTransition(R.anim.push_anim_out_reverse, R.anim.push_anim_in_reverse);
}
/* LOCAL OVERRIDES */
@Override
@ -105,33 +125,13 @@ public class orbotController extends AppCompatActivity {
@Override
public void onBackPressed() {
finish();
onClose(null);
}
public void onClose(View view){
finish();
}
float oldTouchValue;
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
int action=event.getAction();
switch (action) {
case (MotionEvent.ACTION_DOWN):
oldTouchValue = event.getX();
case (MotionEvent.ACTION_MOVE):
float currentX = event.getX();
if (oldTouchValue < currentX-100)
{
finish();
}else {
return super.onTouchEvent(event);
}
default:
return super.onTouchEvent(event);
}
mSwipeDirectionDetector.onTouchEvent(event);
return super.dispatchTouchEvent(event);
}
}

View File

@ -122,11 +122,8 @@ public class tabController extends AppCompatActivity
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
onClearTabBackup();
onRemoveTab(position);
mTabAdapter.notifyItemRemoved(position);
initTabCount();
onRemoveView(position);
}
@Override
@ -154,9 +151,8 @@ public class tabController extends AppCompatActivity
}
public void onRemoveView(int pIndex){
mHomeController.onCloseCurrentTab(mListModel.getList().get(pIndex).getSession());
onClearTabBackup();
//onRemoveTab(pIndex);
onRemoveTab(pIndex);
mListModel.getList().remove(pIndex);
mTabAdapter.notifyItemRemoved(pIndex);
onShowUndoDialog();
}
@ -167,9 +163,17 @@ public class tabController extends AppCompatActivity
mHomeController.initTabCount();
}
public void onClose(){
onClearTabBackup();
if(mListModel.getList().size()<=0){
mHomeController.onNewTab(false, false);
}
finish();
}
public void onNewTabInvoked(){
mHomeController.onNewTab(true,false);
finish();
onClose();
overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out);
}
@ -213,11 +217,11 @@ public class tabController extends AppCompatActivity
onNewTabInvoked();
}
else if(pView.getId() == R.id.pCloseTab){
mListModel.getList().clear();
mtabViewController.onTrigger(tabEnums.eTabViewCommands.M_DISMISS_MENU, null);
initTabCount();
mRecycleView.animate().setDuration(300).alpha(0).withEndAction(() -> mTabAdapter.notifyDataSetChanged());
onShowUndoDialog();
for(int mCounter=0;mCounter<mListModel.getList().size();mCounter++){
onRemoveView(mCounter);
mCounter-=1;
}
}
else if(pView.getId() == R.id.pOpenSetting){
mtabViewController.onTrigger(tabEnums.eTabViewCommands.M_DISMISS_MENU, null);
@ -231,7 +235,7 @@ public class tabController extends AppCompatActivity
if(status.sSettingIsAppPaused && (level==80 || level==15))
{
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.HOME_LOW_MEMORY,true));
finish();
onClose();
}
}
@ -262,7 +266,7 @@ public class tabController extends AppCompatActivity
onClearSelection(null);
}else {
super.onBackPressed();
finish();
onClose();
overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out);
}
}
@ -295,6 +299,7 @@ public class tabController extends AppCompatActivity
mHomeController.onLoadTab((geckoSession)data.get(0),(boolean)data.get(1));
}
else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW)){
onClearTabBackup();
onRemoveView((Integer) data.get(0));
}
return null;

View File

@ -21,17 +21,20 @@ class tabModel
}
public void onRemoveTab(int pIndex){
mBackupIndex.add(mModelList.remove(pIndex));
mBackupIndex.add(mModelList.get(pIndex));
}
public void onClearBackup(){
for(int mCounter=0;mCounter<mBackupIndex.size();mCounter++){
mBackupIndex.get(mCounter).getSession().closeSession();
}
mBackupIndex.clear();
}
public int onLoadBackup(){
int mSize = mBackupIndex.size();
for(int mCounter=0;mCounter<mBackupIndex.size();mCounter++){
mModelList.add(0,mBackupIndex.remove(mCounter));
mModelList.add(0,mBackupIndex.remove(mBackupIndex.size()-1));
mCounter-=1;
}
return mSize;

View File

@ -105,7 +105,7 @@ class tabViewController
mTabOptionMenu.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mTabOptionMenu.setAnimationStyle(R.style.popup_window_animation);
mTabOptionMenu.setElevation(7);
mTabOptionMenu.showAsDropDown(view,0, helperMethod.pxFromDp(-45));
mTabOptionMenu.showAsDropDown(view,helperMethod.pxFromDp(-125), helperMethod.pxFromDp(-45));
}
private void onCloseTabMenu() {
@ -134,6 +134,7 @@ class tabViewController
mToastLayoutRoot.setAlpha(0);
mToastLayoutRoot.animate().alpha(1);
initTabCount();
mDelayHandler.removeCallbacksAndMessages(null);
mDelayHandler.postDelayed(() -> mToastLayoutRoot.animate().alpha(0).withEndAction(() -> mToastLayoutRoot.setVisibility(View.GONE)), 1500);
}

View File

@ -6,4 +6,5 @@ public class messages
public final static int MESSAGE_UPDATE_LOADING_TEXT =1;
public final static int MESSAGE_ON_URL_LOAD =2;
public final static int MESSAGE_PROGRESSBAR_VALIDATE =3;
}

View File

@ -116,10 +116,12 @@ public class suggestionDataModel {
addSuggenstions("https://wowhead.com","Wow Head",true);
addSuggenstions("https://bing.com","Bing",true);
addSuggenstions("https://google.com","Google",true);
addSuggenstions("https://boogle.store","Genesis Search",true);
addSuggenstions("https://genesis.onion","Genesis Search",true);
}
private void addSuggenstions(String url, String title,boolean isLoading){
url = url.replace("boogle.store","genesis.onion");
title = title.replace("boogle.store","Genesis Search").replace("boogle","genesis");
url = helperMethod.removeLastSlash(url);
if(url.length()>1500 || title.equals("$TITLE") || title.equals("loading")){
return;

View File

@ -61,6 +61,7 @@ class tabDataModel
int size = mTabs.size();
for(int counter = 0; counter< size; counter++){
mTabs.get(0).getSession().stop();
mTabs.get(0).getSession().closeSession();
mTabs.remove(0);
}
if(mTabs.size()>0){
@ -68,6 +69,7 @@ class tabDataModel
}
databaseController.getInstance().execSQL("DELETE FROM tab WHERE 1",null);
}
void closeTab(geckoSession mSession) {
@ -158,7 +160,7 @@ class tabDataModel
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}, 100);
}, 500);
}
}
}

View File

@ -0,0 +1,102 @@
package com.darkweb.genesissearchengine.helperManager;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
public class SimpleGestureFilter extends SimpleOnGestureListener{
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
float x1 = e1.getX();
float y1 = e1.getY();
float x2 = e2.getX();
float y2 = e2.getY();
Direction direction = getDirection(x1,y1,x2,y2);
return onSwipe(direction);
}
public boolean onSwipe(Direction direction){
return false;
}
/**
* Given two points in the plane p1=(x1, x2) and p2=(y1, y1), this method
* returns the direction that an arrow pointing from p1 to p2 would have.
* @param x1 the x position of the first point
* @param y1 the y position of the first point
* @param x2 the x position of the second point
* @param y2 the y position of the second point
* @return the direction
*/
public Direction getDirection(float x1, float y1, float x2, float y2){
double angle = getAngle(x1, y1, x2, y2);
return Direction.get(angle);
}
/**
*
* Finds the angle between two points in the plane (x1,y1) and (x2, y2)
* The angle is measured with 0/360 being the X-axis to the right, angles
* increase counter clockwise.
*
* @param x1 the x position of the first point
* @param y1 the y position of the first point
* @param x2 the x position of the second point
* @param y2 the y position of the second point
* @return the angle between two points
*/
public double getAngle(float x1, float y1, float x2, float y2) {
double rad = Math.atan2(y1-y2,x2-x1) + Math.PI;
return (rad*180/Math.PI + 180)%360;
}
public enum Direction{
up,
down,
left,
right;
/**
* Returns a direction given an angle.
* Directions are defined as follows:
*
* Up: [45, 135]
* Right: [0,45] and [315, 360]
* Down: [225, 315]
* Left: [135, 225]
*
* @param angle an angle from 0 to 360 - e
* @return the direction of an angle
*/
public static Direction get(double angle){
if(inRange(angle, 45, 135)){
return Direction.up;
}
else if(inRange(angle, 0,45) || inRange(angle, 315, 360)){
return Direction.right;
}
else if(inRange(angle, 225, 315)){
return Direction.down;
}
else{
return Direction.left;
}
}
/**
* @param angle an angle
* @param init the initial bound
* @param end the final bound
* @return returns true if the given angle is in the interval [init, end).
*/
private static boolean inRange(double angle, float init, float end){
return (angle >= init) && (angle < end);
}
}
}

View File

@ -8,6 +8,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.ImageButton;
import android.widget.TextView;
import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel;
import com.darkweb.genesissearchengine.constants.strings;
@ -39,6 +40,7 @@ public class autoCompleteAdapter extends ArrayAdapter<historyRowModel> {
TextView customerNameLabel = v.findViewById(R.id.hintCompletionTitle);
TextView myTv = v.findViewById( R.id.hintCompletionUrl);
ImageButton mMoveURL = v.findViewById( R.id.pMoveURL);
if (customerNameLabel != null) {
if(customer.getHeader().equals(strings.GENERIC_EMPTY_STR)){
@ -47,6 +49,7 @@ public class autoCompleteAdapter extends ArrayAdapter<historyRowModel> {
customerNameLabel.setText(customer.getHeader());
}
myTv.setText(customer.getDescription());
mMoveURL.setTag(customer.getDescription());
}
}
return v;
@ -72,18 +75,14 @@ public class autoCompleteAdapter extends ArrayAdapter<historyRowModel> {
if(constraint != null && !constraint.equals("about:blank")) {
suggestions.clear();
for (historyRowModel customer : itemsAll) {
if(suggestions.size()>10){
if(suggestions.size()>4){
break;
}
if(!customer.getHeader().equals("$TITLE") && customer.getHeader().length()>2 && customer.getDescription().toLowerCase().length()>2 && (customer.getHeader().toLowerCase().contains(constraint.toString().toLowerCase()) || customer.getDescription().toLowerCase().contains(constraint.toString().toLowerCase()))){
if(!customer.getHeader().equals("$TITLE") && customer.getHeader().length()>2 && customer.getDescription().toLowerCase().length()>2 && (customer.getHeader().toLowerCase().contains(constraint.toString().toLowerCase()) || constraint.toString().toLowerCase().toLowerCase().contains(customer.getHeader()) || constraint.toString().toLowerCase().contains(customer.getDescription().toLowerCase()) || customer.getDescription().toLowerCase().contains(constraint.toString().toLowerCase()))){
Log.i("memememe:","memememe:"+constraint.toString().toLowerCase().replace("https://","").replace("http://",""));
Log.i("memememe1:","memememe2:"+customer.getDescription().replace("https://","").replace("http://",""));
if(!constraint.toString().toLowerCase().replace("https://","").replace("http://","").equals(customer.getDescription().replace("https://","").replace("http://",""))){
suggestions.add(customer);
}
suggestions.add(customer);
}
}
FilterResults filterResults = new FilterResults();
@ -98,7 +97,7 @@ public class autoCompleteAdapter extends ArrayAdapter<historyRowModel> {
protected void publishResults(CharSequence constraint, FilterResults results)
{
try{
if(results != null && results.count > 0) {
if(results != null) {
ArrayList<historyRowModel> filteredList = (ArrayList<historyRowModel>)((ArrayList<historyRowModel>)results.values).clone();
clear();

View File

@ -246,6 +246,16 @@ public class helperMethod
context.startActivity(myIntent);
}
public static void openActivityReverse( Class<?> cls,int type,AppCompatActivity context,boolean animation){
Intent myIntent = new Intent(context, cls);
myIntent.putExtra(keys.PROXY_LIST_TYPE, type);
if(!animation){
myIntent.addFlags(FLAG_ACTIVITY_NO_ANIMATION);
}
context.startActivity(myIntent);
}
public static void restartActivity( Intent pIntent, AppCompatActivity pContext){
pContext.finish();
pContext.startActivity(pIntent);

View File

@ -162,9 +162,9 @@ class orbotManager
mLogsStarted = true;
}
else {
logs = logs.replaceAll("[^a-zA-Z0-9%\\s+]", "");
logs = helperMethod.capitalizeString(logs);
logs = logs.replace("(","").replace(":","_FERROR_").replace("NOTICE","").replace(")","").replace("_FERROR_","");
// logs = logs.replaceAll("[^a-zA-Z0-9%\\s+]", "");
// logs = helperMethod.capitalizeString(logs);
// logs = logs.replace("(","").replace(":","_FERROR_").replace("NOTICE","").replace(")","").replace("_FERROR_","");
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="250"/>
</set>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="250"
android:fromXDelta="0%"
android:fromYDelta="0%"
android:toXDelta="-100%"
android:toYDelta="0%" />
</set>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="250"/>
</set>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate
android:duration="250"
android:fromXDelta="100%"
android:fromYDelta="0%"
android:toXDelta="0%"
android:toYDelta="0%" />
</set>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:fromXDelta="0%p"
android:toXDelta="100%p"/>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="300"/>
</set>

View File

@ -14,10 +14,10 @@
android:bottom="0dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff"/>
<solid android:color="@color/c_background"/>
<stroke
android:width="1dp"
android:color="@color/white_dark"/>
android:color="@color/c_edittext_background_dark"/>
</shape>
</item>
</ripple>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/c_alert_background" android:layout_height="match_parent" android:layout_width="match_parent">
<item android:id="@android:id/mask">
<shape android:shape="rectangle">
@ -16,6 +17,9 @@
android:topLeftRadius="6dp"
android:topRightRadius="6dp"/>
<item name="android:shadowColor">#000000</item>
<item name="android:shadowRadius">5</item>
<item name="android:shadowDy">3</item>
</shape>
</item>
@ -39,6 +43,8 @@
android:endColor="@color/c_alert_background"
android:startColor="@color/c_alert_background"
android:type="linear" />
</shape>
</item>
</ripple>

View File

@ -1,5 +1,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white"/>
<solid android:color="@color/c_edittext_background"/>
<corners
android:bottomLeftRadius="0dp"

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:left="-5dp" android:right="-5dp" android:top="0dp" android:bottom="-5dp">
<item android:left="-5dp" android:right="-5dp" android:top="0dp" android:bottom="-15dp">
<shape
android:shape="rectangle">
<stroke android:width="4dp" android:color="@color/secondary" />
<solid android:color="#050c14" />
<stroke android:width="4dp" android:color="#7700B3B3" />
<solid android:color="#181b25" />
</shape>
</item>
</layer-list>

View File

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M5,15h2V8.41L18.59,20L20,18.59L8.41,7H15V5H5V15z"/>
</vector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 864 KiB

After

Width:  |  Height:  |  Size: 875 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 KiB

View File

@ -0,0 +1,60 @@
<?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:id="@+id/pPopupFindContainer"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/pNavigationContainer"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/c_edittext_background_dark"
android:paddingBottom="1dp"
android:elevation="8dp"
android:onClick="onOpenSearchEngine"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<LinearLayout
android:id="@+id/pNavigationContainerInner"
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@color/c_background"
android:elevation="8dp"
android:onClick="onOpenSearchEngine"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="30dp"
android:layout_height="45dp"
android:contentDescription="@string/GENERAL_TODO"
android:padding="6.5dp"
android:layout_marginStart="2dp"
android:paddingEnd="4dp"
app:srcCompat="@xml/ic_baseline_search"
tools:ignore="RtlSymmetry"
app:tint="@color/c_navigation_tint" />
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="3"
android:paddingTop="11dp"
android:layout_marginStart="6dp"
android:text="@string/GENERAL_SEARCH_ENGINE"
android:textColor="@color/c_text_v1"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,50 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingRight="0dp"
android:paddingLeft="0dp"
android:paddingBottom="0dp"
android:elevation="0dp"
android:orientation="vertical">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="10dp"
android:paddingBottom="10dp"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_side_item_suggestions"
android:onClick="onSuggestionInvoked"
android:clickable="true"
android:focusable="true"
android:orientation="horizontal"
tools:ignore="UselessParent">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:onClick="onSuggestionInvoked"
android:background="@xml/gx_side_item_suggestions">
android:layout_weight="1"
android:paddingTop="10dp"
android:paddingBottom="10dp">
<TextView
<TextView
android:id="@+id/hintCompletionTitle"
android:layout_marginEnd="20dp"
android:clickable="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:clickable="false"
android:ellipsize="end"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="@color/black"
android:singleLine="true"
android:textSize="14sp"
android:ellipsize="end"
android:text="@string/GENERAL_DEFAULT_HINT_SUGGESTION" />
android:text="@string/GENERAL_DEFAULT_HINT_SUGGESTION"
android:textColor="@color/c_text_v1"
android:textSize="14sp" />
<TextView
<TextView
android:id="@+id/hintCompletionUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="20dp"
android:clickable="false"
android:layout_width="wrap_content"
android:singleLine="true"
android:ellipsize="end"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:textColor="@color/holo_dark_gray"
android:textSize="12.5sp"
android:text="@string/GENERAL_DEFAULT_HINT_SUGGESTION" />
android:singleLine="true"
android:text="@string/GENERAL_DEFAULT_HINT_SUGGESTION"
android:textColor="@color/c_text_v6"
android:textSize="12.5sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<ImageButton
android:id="@+id/pMoveURL"
android:layout_width="55dp"
android:padding="8dp"
android:layout_height="55dp"
android:layout_gravity="center_vertical"
android:src="@xml/ic_arrow_right"
android:tag="@string/GENERAL_TODO"
android:onClick="onSuggestionMove"
android:layout_margin="2dp"
android:background="@xml/gx_ripple_default_round"
android:tint="@color/c_navigation_tint"
android:rotation="225"
android:contentDescription="@string/GENERAL_TODO" />
</LinearLayout>
</LinearLayout>

View File

@ -24,13 +24,13 @@
android:layout_height="wrap_content"
android:background="@color/c_background_keyboard"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:translationZ="10dp">
android:translationZ="3dp">
<FrameLayout
android:id="@+id/pTopLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:animateLayoutChanges="false"
android:background="#00000000"
android:clipToPadding="false"
app:layout_constraintEnd_toEndOf="parent"
@ -87,6 +87,7 @@
android:animateLayoutChanges="true"
android:background="@xml/gx_generic_input"
android:completionHintView="@layout/hint_view"
android:dropDownAnchor="@id/pSearchEngineBar"
android:ems="10"
android:hint="@string/GENERAL_SEARCH_HINT"
android:importantForAutofill="no"
@ -94,7 +95,7 @@
android:maxLines="1"
android:paddingLeft="38dp"
android:paddingRight="15dp"
android:popupElevation="5dp"
android:popupElevation="0dp"
android:selectAllOnFocus="true"
android:text="@string/GENERAL_HOME_URL"
android:textColor="@color/c_text_v1"
@ -175,8 +176,8 @@
</com.google.android.material.appbar.AppBarLayout>
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:id="@+id/pNestedScroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_vertical"
android:layout_marginTop="0dp"
@ -198,7 +199,7 @@
android:id="@+id/pProgressBar"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="4dp"
android:layout_height="5dp"
android:layout_marginTop="-1dp"
android:alpha="0"
android:background="@color/clear_alpha"
@ -227,14 +228,15 @@
<FrameLayout
android:id="@+id/pSplashLayout"
android:layout_width="match_parent"
android:animateLayoutChanges="true"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pSplashScreen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@xml/hox_rounded_corner_container_bottom"
android:clickable="true"
android:background="@color/landing_ease_blue_splash"
android:animateLayoutChanges="true"
android:focusable="true">
<ImageView
@ -256,10 +258,9 @@
android:id="@+id/pImageDivider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="190dp"
android:layout_marginTop="103dp"
android:adjustViewBounds="true"
android:contentDescription="@string/GENERAL_TODO"
android:paddingBottom="15dp"
android:src="@drawable/glide"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -280,23 +281,24 @@
<View
android:id="@+id/view"
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_marginStart="20dp"
android:layout_marginBottom="11dp"
android:background="#0A1727"
android:elevation="2dp"
android:layout_height="3dp"
android:alpha="0.5"
android:elevation="4dp"
android:background="#264d73"
app:layout_constraintBottom_toTopOf="@+id/pCopyright"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/pCopyright"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="21dp"
android:layout_marginBottom="14dp"
android:text="Copyright © by Genesis Technologies"
android:textColor="#004d4d"
android:background="#0A1727"
android:paddingStart="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:text="Copyright © by Genesis Technologies | Built 1.0.2.2"
android:textColor="#4a6868"
android:textSize="13sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
@ -336,17 +338,18 @@
android:id="@+id/pOrbotLogs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="22dp"
android:layout_marginEnd="23dp"
android:layout_marginStart="18dp"
android:layout_marginBottom="20dp"
android:background="@xml/hx_border_left"
android:ellipsize="end"
android:gravity="start"
android:maxHeight="250dp"
android:paddingStart="20dp"
android:paddingTop="10dp"
android:maxLines="4"
android:minHeight="80dp"
android:paddingStart="15dp"
android:paddingTop="18dp"
android:paddingRight="20dp"
android:paddingBottom="10dp"
android:paddingBottom="15dp"
android:text="@string/HOME_LOADING"
android:textAlignment="textStart"
android:textColor="@color/white"
@ -374,11 +377,28 @@
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_marginStart="5dp"
android:layout_marginTop="85dp"
android:contentDescription="@string/GENERAL_TODO"
android:translationZ="3dp"
app:layout_constraintBottom_toBottomOf="@+id/pImageDivider"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/pImageDivider"
app:srcCompat="@drawable/genesis_logo_bordered" />
<ImageView
android:id="@+id/pBlocker"
android:layout_width="189dp"
android:layout_height="65dp"
android:layout_marginTop="14dp"
android:layout_marginBottom="13dp"
android:clickable="false"
android:contentDescription="@string/GENERAL_TODO"
android:focusable="false"
android:translationZ="3dp"
app:layout_constraintBottom_toTopOf="@+id/view"
app:layout_constraintEnd_toEndOf="@+id/pSettings"
app:layout_constraintStart_toStartOf="@+id/Connect"
app:layout_constraintTop_toBottomOf="@+id/pOrbotLogs" />
<TextView
android:id="@+id/pInfo4"
android:layout_width="wrap_content"
@ -392,7 +412,7 @@
android:paddingRight="15dp"
android:text="Secured by Tor Network"
android:textAlignment="textStart"
android:textColor="#6a9495"
android:textColor="#bfbfbf"
android:textFontWeight="5"
android:textSize="12.5sp"
android:textStyle="bold"
@ -415,7 +435,7 @@
android:paddingRight="15dp"
android:text="Builtin Onion Search Engine"
android:textAlignment="textStart"
android:textColor="#6a9495"
android:textColor="#bfbfbf"
android:textFontWeight="5"
android:textSize="12.5sp"
android:textStyle="bold"
@ -438,7 +458,7 @@
android:paddingRight="15dp"
android:text="No Record and Digital Fingerprinting"
android:textAlignment="textStart"
android:textColor="#6a9495"
android:textColor="#bfbfbf"
android:textFontWeight="5"
android:textSize="12.5sp"
android:textStyle="bold"
@ -453,10 +473,10 @@
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_marginStart="5dp"
android:layout_marginTop="15dp"
android:layout_marginTop="10dp"
android:translationZ="3dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pImageDivider"
app:layout_constraintTop_toBottomOf="@+id/pGenesisLogo"
app:srcCompat="@drawable/sheild_logo_bordered" />
<TextView
@ -472,7 +492,7 @@
android:paddingRight="15dp"
android:text="Secured by Tor Network"
android:textAlignment="textStart"
android:textColor="#6a9495"
android:textColor="#bfbfbf"
android:textFontWeight="5"
android:textSize="12.5sp"
android:textStyle="bold"
@ -495,7 +515,7 @@
android:paddingRight="15dp"
android:text="Builtin Onion Search Engine"
android:textAlignment="textStart"
android:textColor="#6a9495"
android:textColor="#bfbfbf"
android:textFontWeight="5"
android:textSize="12.5sp"
android:textStyle="bold"
@ -518,7 +538,7 @@
android:paddingRight="15dp"
android:text="No Record and Digital Fingerprinting"
android:textAlignment="textStart"
android:textColor="#6a9495"
android:textColor="#bfbfbf"
android:textFontWeight="5"
android:textSize="12.5sp"
android:textStyle="bold"
@ -578,17 +598,27 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/pBlocker"
<include
android:id="@+id/pSearchEngineBar"
layout="@layout/popup_search_engine"
android:layout_width="match_parent"
android:clickable="true"
android:alpha="0"
android:layout_height="wrap_content"
android:elevation="8dp"
android:visibility="gone"
android:layout_height="match_parent"
tools:srcCompat="@tools:sample/avatars"
android:background="@color/black"
android:contentDescription="@string/GENERAL_TODO"
android:focusable="true" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/pAdView" />
<ImageView
android:id="@+id/pBlockerFullSceen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0"
android:background="@color/black"
android:clickable="true"
android:contentDescription="@string/GENERAL_TODO"
android:focusable="true"
android:visibility="gone"
tools:srcCompat="@tools:sample/avatars" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -213,7 +213,7 @@
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
app:tint="@color/c_icon_tint"
android:src="@drawable/ic_baseline_search"
android:src="@xml/ic_baseline_search"
android:contentDescription="@string/GENERAL_TODO" />
<LinearLayout

View File

@ -10,8 +10,9 @@
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="200dp"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:elevation="7dp"
android:orientation="vertical"
android:background="@xml/hx_menu_popup"
app:layout_constraintEnd_toEndOf="parent"

View File

@ -43,6 +43,7 @@
<color name="c_profile_radial_inner">#2c2b31</color>
<color name="c_profile_radial_outer">#2c2b31</color>
<color name="c_edittext_background">#3c3946</color>
<color name="c_edittext_background_dark">#24222a</color>
<color name="c_menu_drop_shadow_05">#00000000</color>
<color name="c_menu_drop_shadow_10">#00000000</color>
<color name="c_menu_drop_shadow_15">#00000000</color>
@ -69,7 +70,7 @@
<color name="blue">#0066FF</color>
<color name="ease_blue_light">#fdfeff</color>
<color name="ease_blue">#4d88ff</color>
<color name="landing_ease_blue">#212d45</color>
<color name="landing_ease_blue">#0A1727</color>
<color name="landing_ease_blue_light_1">#eef1f7</color>
<color name="landing_ease_blue_light_2">#eef1f7</color>
<color name="cursor_blue">#3385ff</color>

View File

@ -4,6 +4,7 @@
<string name="app_name" translatable="false">Genesis</string>
<string name="GENERAL_SEARCH_HINT" translatable="false">Search or type web address</string>
<string name="GENERAL_FIND_HINT" translatable="false">Find in page</string>
<string name="GENERAL_SEARCH_ENGINE" translatable="false">Search Engine</string>
<string name="GENERAL_HOME_URL" translatable="false">https://genesis.onion</string>
<string name="GENERAL_ERROR_TITLE" translatable="false">\u0020\u0020\u0020Opps! Some Thing Went Wrong</string>
<string name="GENERAL_TODO" translatable="false">TODO</string>

View File

@ -45,6 +45,7 @@
<color name="c_profile_radial_inner">#000000</color>
<color name="c_profile_radial_outer">#ffffff</color>
<color name="c_edittext_background">#f1f3f4</color>
<color name="c_edittext_background_dark">#f5f5f5</color>
<color name="c_button_warning">#610505</color>
<color name="c_rateus_warning">#b3b3b3</color>
<color name="c_splash_buttons">#ffffff</color>
@ -70,8 +71,8 @@
<color name="blue">#0066FF</color>
<color name="ease_blue_light">#fdfeff</color>
<color name="ease_blue">#4d88ff</color>
<color name="landing_ease_blue">#111722</color>
<color name="landing_ease_blue_splash">#192234</color>
<color name="landing_ease_blue">#0A1727</color>
<color name="landing_ease_blue_splash">#191919</color>
<color name="landing_ease_blue_light_1">#eef1f7</color>
<color name="landing_ease_blue_light_2">#eef1f7</color>
<color name="cursor_blue">#3385ff</color>

View File

@ -4,6 +4,7 @@
<string name="app_name" translatable="false">Genesis</string>
<string name="GENERAL_SEARCH_HINT" translatable="false">Search or type web address</string>
<string name="GENERAL_FIND_HINT" translatable="false">Find in page</string>
<string name="GENERAL_SEARCH_ENGINE" translatable="false">Search Engine</string>
<string name="GENERAL_HOME_URL" translatable="false">https://genesis.onion</string>
<string name="GENERAL_ERROR_TITLE" translatable="false">\u0020\u0020\u0020Opps! Some Thing Went Wrong</string>
<string name="GENERAL_TODO" translatable="false">TODO</string>
@ -312,7 +313,7 @@
<!-- Home View -->
<string name="HOME_TAB_TEXT" translatable="false">1</string>
<string name="HOME_CONNECT" translatable="false">Connect</string>
<string name="HOME_LOADING" translatable="false">Idle | Waiting to start</string>
<string name="HOME_LOADING" translatable="false">Idle | Genesis on standby at the moment</string>
<string name="HOME_LOADING_STATIC" translatable="false">~&#160;Genesis on standby at the moment</string>
<!-- Landing Page -->