Bug Fixes

Bug Fixes
master
msmannan00 2021-04-06 00:07:02 +05:00
parent 4438620783
commit c267a8f4eb
77 changed files with 1668 additions and 690 deletions

View File

@ -151,7 +151,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'com.google.android.material:material:1.4.0-alpha01' implementation 'com.google.android.material:material:1.4.0-alpha02'
implementation 'androidx.preference:preference:1.1.1' implementation 'androidx.preference:preference:1.1.1'
implementation 'com.google.android.material:material:1.3.0' implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'androidx.appcompat:appcompat:1.2.0'

View File

@ -29,7 +29,7 @@
<meta name="description" content="Darkweb or Deepweb Search Engine working on multiple layered network including i2p,onion and riddle. Optimized Searches with mobile support and seperate Mobile Apps"> <meta name="description" content="Darkweb or Deepweb Search Engine working on multiple layered network including i2p,onion and riddle. Optimized Searches with mobile support and seperate Mobile Apps">
</head> </head>
<body class="clear_selection hi_background"> <body class="clear_selection hi_background" id="pBody">
<div class="hi_container_size"> <div class="hi_container_size">
<!--top bar--> <!--top bar-->
<p class="lh_light_header gs-disable-highlight" id="lh_light_header_identifier lh_light_background"> <p class="lh_light_header gs-disable-highlight" id="lh_light_header_identifier lh_light_background">

View File

@ -29,7 +29,7 @@
<meta name="description" content="Darkweb or Deepweb Search Engine working on multiple layered network including i2p,onion and riddle. Optimized Searches with mobile support and seperate Mobile Apps"> <meta name="description" content="Darkweb or Deepweb Search Engine working on multiple layered network including i2p,onion and riddle. Optimized Searches with mobile support and seperate Mobile Apps">
</head> </head>
<body class="clear_selection"> <body class="clear_selection" id="pBody">
<div class="hi_container_size"> <div class="hi_container_size">
<!--top bar--> <!--top bar-->
<p class="lh_light_header gs-disable-highlight" id="lh_light_header_identifier"> <p class="lh_light_header gs-disable-highlight" id="lh_light_header_identifier">

View File

@ -71,9 +71,12 @@ function onTriggerScriptHandler(pCommand,pData) {
$(window).on('load', function() { $(window).on('load', function() {
/* For Local Testing */ /* For Local Testing */
var mResponseJson = '[{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://wikileaks.org/static/img/wl-logo.png", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"}]'; // var mResponseJson = '[{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://wikileaks.org/static/img/wl-logo.png", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"}]';
setTimeout(mHomepageLoader.onLoadReferenceWebsites, 500); // setTimeout(mHomepageLoader.onLoadReferenceWebsites, 500);
setTimeout(mHomepageLoader.onLoadReferenceWebsiteContent, 1000, mResponseJson); // setTimeout(mHomepageLoader.onLoadReferenceWebsiteContent, 1000, mResponseJson);
document.getElementById("pBody").classList.toggle('body_fadein');
setTimeout(function (){
onTriggerScriptHandler(Commands.onLoadReferenceWebsites, null) onTriggerScriptHandler(Commands.onLoadReferenceWebsites, null)
}, 100);
}); });

View File

@ -74,6 +74,9 @@ $(window).on('load', function() {
// var mResponseJson = '[{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://wikileaks.org/static/img/wl-logo.png", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"}]'; // var mResponseJson = '[{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://wikileaks.org/static/img/wl-logo.png", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"},{ "mIcon":"https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196", "mHeader":"Experience", "mBody":"Donec id elit non mi porta gravida at eget metus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui"}]';
// setTimeout(mHomepageLoader.onLoadReferenceWebsites, 500); // setTimeout(mHomepageLoader.onLoadReferenceWebsites, 500);
// setTimeout(mHomepageLoader.onLoadReferenceWebsiteContent, 1000, mResponseJson); // setTimeout(mHomepageLoader.onLoadReferenceWebsiteContent, 1000, mResponseJson);
document.getElementById("pBody").classList.toggle('body_fadein');
setTimeout(function (){
onTriggerScriptHandler(Commands.onLoadReferenceWebsites, null) onTriggerScriptHandler(Commands.onLoadReferenceWebsites, null)
}, 1000);
}); });

View File

@ -1,4 +1,16 @@
/*Search*/ /*Search*/
body{
opacity: 0;
transition: opacity 2s;
-webkit-transition: opacity 2s; /* Safari */
}
.body_fadein {
opacity: 1;
transition-duration: 0.5s;
transition-property: opacity;
}
.line-style { .line-style {
border: 0; border: 0;
height: 1px; height: 1px;

View File

@ -1,4 +1,16 @@
/*Search*/ /*Search*/
body{
opacity: 0;
transition: opacity 2s;
-webkit-transition: opacity 2s; /* Safari */
}
.body_fadein {
opacity: 1;
transition-duration: 0.5s;
transition-property: opacity;
}
.line-style { .line-style {
border: 0; border: 0;
height: 1px; height: 1px;

View File

@ -2,6 +2,8 @@ package com.darkweb.genesissearchengine.appManager.bookmarkManager;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler; import android.os.Handler;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent; import android.view.MotionEvent;
@ -17,6 +19,9 @@ import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.helperManager.eventObserver; import com.darkweb.genesissearchengine.helperManager.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod; import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.example.myapplication.R; import com.example.myapplication.R;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
@ -441,7 +446,13 @@ public class bookmarkAdapter extends RecyclerView.Adapter<bookmarkAdapter.listVi
break; break;
} }
} }
mContext.runOnUiThread(() -> mFaviconLogo.setImageDrawable(mHindTypeIconTemp.getDrawable())); mContext.runOnUiThread(() -> {
Bitmap mBitmap = helperMethod.drawableToBitmap(mHindTypeIconTemp.getDrawable());
ByteArrayOutputStream out = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 20, out);
Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));
mFaviconLogo.setImageBitmap(decoded);
});
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -83,7 +83,7 @@ public class bridgeController extends AppCompatActivity {
mCustomBridgeBlocker = findViewById(R.id.pCustomBridgeBlocker); mCustomBridgeBlocker = findViewById(R.id.pCustomBridgeBlocker);
mBridgeViewController.initialization(mCustomPort, mBridgeButton,this, mBridgeObfs, mBridgeChina, mBridgeCustom, mCustomBridgeBlocker); mBridgeViewController.initialization(mCustomPort, mBridgeButton,this, mBridgeObfs, mBridgeChina, mBridgeCustom, mCustomBridgeBlocker);
mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,0)); mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,0,status.sBridgeCustomType));
mBridgeModel = new bridgeModel(new bridgeController.bridgeModelCallback(), this); mBridgeModel = new bridgeModel(new bridgeController.bridgeModelCallback(), this);
} }
@ -127,10 +127,10 @@ public class bridgeController extends AppCompatActivity {
/* EXTERNAL LISTENERS */ /* EXTERNAL LISTENERS */
public void onUpdateBridges(String pString) { public void onUpdateBridges(String pBridge, String pType) {
if(pString.length()>5){ if(pBridge.length()>5){
mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_CUSTOM_BRIDGE, Collections.singletonList(pString)); mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_CUSTOM_BRIDGE, Arrays.asList(pBridge, pType));
mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250)); mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250, status.sBridgeCustomType));
}else { }else {
if(status.sBridgeCustomBridge.equals("meek")){ if(status.sBridgeCustomBridge.equals("meek")){
mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_MEEK_BRIDGE, null); mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_MEEK_BRIDGE, null);
@ -198,10 +198,10 @@ public class bridgeController extends AppCompatActivity {
} }
public void onMeekChecked(View view){ public void onMeekChecked(View view){
mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_MEEK_BRIDGE, null); mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_MEEK_BRIDGE, null);
mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250)); mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250, status.sBridgeCustomType));
} }
public void onObfsChecked(View view){ public void onObfsChecked(View view){
mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_OBFS_CHECK, null); mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_OBFS_CHECK, null);
mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250)); mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250, status.sBridgeCustomType));
} }
} }

View File

@ -16,6 +16,9 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import static com.darkweb.genesissearchengine.constants.strings.BRIDGE_CUSTOM_BRIDGE_MEEK;
import static com.darkweb.genesissearchengine.constants.strings.BRIDGE_CUSTOM_BRIDGE_OBFS4;
import static com.darkweb.genesissearchengine.constants.strings.GENERIC_EMPTY_STR;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManager.M_BRIDGE_MAIL; import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManager.M_BRIDGE_MAIL;
class bridgeModel class bridgeModel
@ -38,18 +41,32 @@ class bridgeModel
pluginController.getInstance().onMessageManagerInvoke(Arrays.asList(constants.CONST_BACKEND_GOOGLE_URL, mContext), M_BRIDGE_MAIL); pluginController.getInstance().onMessageManagerInvoke(Arrays.asList(constants.CONST_BACKEND_GOOGLE_URL, mContext), M_BRIDGE_MAIL);
} }
public void onCustomChecked(String pString){ public void onCustomChecked(String pBridge, String pType){
status.sBridgeCustomBridge = pString; status.sBridgeCustomBridge = pBridge;
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,status.sBridgeCustomBridge)); status.sBridgeCustomType = pType;
status.sBridgeGatewayManual = true;
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,status.sBridgeCustomBridge));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,status.sBridgeCustomType));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_GATEWAY_MANUAL,status.sBridgeGatewayManual));
} }
public void onMeekChecked(){ public void onMeekChecked(){
status.sBridgeCustomBridge = strings.BRIDGE_CUSTOM_BRIDGE_MEEK; status.sBridgeCustomBridge = BRIDGE_CUSTOM_BRIDGE_MEEK;
status.sBridgeCustomType = GENERIC_EMPTY_STR;
status.sBridgeGatewayManual = false;
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,status.sBridgeCustomBridge)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,status.sBridgeCustomBridge));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,status.sBridgeCustomType));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_GATEWAY_MANUAL,status.sBridgeGatewayManual));
} }
public void onObfsChecked(){ public void onObfsChecked(){
status.sBridgeCustomBridge = strings.BRIDGE_CUSTOM_BRIDGE_OBFS4; status.sBridgeCustomBridge = BRIDGE_CUSTOM_BRIDGE_OBFS4;
status.sBridgeCustomType = GENERIC_EMPTY_STR;
status.sBridgeGatewayManual = false;
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,status.sBridgeCustomBridge)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,status.sBridgeCustomBridge));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,status.sBridgeCustomType));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_GATEWAY_MANUAL,status.sBridgeGatewayManual));
} }
public void onTrigger(bridgeEnums.eBridgeModelCommands pCommands, List<Object> pData){ public void onTrigger(bridgeEnums.eBridgeModelCommands pCommands, List<Object> pData){
@ -57,7 +74,7 @@ class bridgeModel
requestBridges(); requestBridges();
} }
else if(pCommands == bridgeEnums.eBridgeModelCommands.M_CUSTOM_BRIDGE){ else if(pCommands == bridgeEnums.eBridgeModelCommands.M_CUSTOM_BRIDGE){
onCustomChecked((String) pData.get(0)); onCustomChecked((String) pData.get(0), (String) pData.get(1));
} }
else if(pCommands == bridgeEnums.eBridgeModelCommands.M_MEEK_BRIDGE){ else if(pCommands == bridgeEnums.eBridgeModelCommands.M_MEEK_BRIDGE){
onMeekChecked(); onMeekChecked();

View File

@ -106,7 +106,7 @@ class bridgeViewController
mCustomBridgeBlocker.setVisibility(View.GONE); mCustomBridgeBlocker.setVisibility(View.GONE);
} }
private void initViews(String p_bridge, int p_duration){ private void initViews(String p_bridge, int p_duration, String pType){
resetRadioButtons(p_duration); resetRadioButtons(p_duration);
if(p_bridge.equals(strings.BRIDGE_CUSTOM_BRIDGE_OBFS4)){ if(p_bridge.equals(strings.BRIDGE_CUSTOM_BRIDGE_OBFS4)){
animateColor(mBridgeObfs, mBridgeObfs.getCurrentTextColor(), mContext.getResources().getColor(R.color.c_text_v1), "textColor", p_duration); animateColor(mBridgeObfs, mBridgeObfs.getCurrentTextColor(), mContext.getResources().getColor(R.color.c_text_v1), "textColor", p_duration);
@ -126,13 +126,13 @@ class bridgeViewController
mCustomPort.setText(strings.GENERIC_EMPTY_STR); mCustomPort.setText(strings.GENERIC_EMPTY_STR);
}else { }else {
onEnableCustomBridge(); onEnableCustomBridge();
mCustomPort.setText(p_bridge.replace("\n","")); mCustomPort.setText(("(Type) " + pType + " ➔ " + "(Config) "+p_bridge.replace("\n","")));
} }
} }
public void onTrigger(bridgeEnums.eBridgeViewCommands p_commands, List<Object> p_data){ public void onTrigger(bridgeEnums.eBridgeViewCommands p_commands, List<Object> p_data){
if(p_commands == bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS){ if(p_commands == bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS){
initViews((String) p_data.get(0), (int)p_data.get(1)); initViews((String) p_data.get(0), (int)p_data.get(1), (String) p_data.get(2));
} }
if(p_commands == bridgeEnums.eBridgeViewCommands.M_ENABLE_CUSTOM_BRIDGE){ if(p_commands == bridgeEnums.eBridgeViewCommands.M_ENABLE_CUSTOM_BRIDGE){
onEnableCustomBridge(); onEnableCustomBridge();

View File

@ -2,6 +2,8 @@ package com.darkweb.genesissearchengine.appManager.historyManager;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler; import android.os.Handler;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -19,6 +21,9 @@ import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.helperManager.eventObserver; import com.darkweb.genesissearchengine.helperManager.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod; import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.example.myapplication.R; import com.example.myapplication.R;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
@ -488,7 +493,13 @@ public class historyAdapter extends RecyclerView.Adapter<historyAdapter.listView
break; break;
} }
} }
mContext.runOnUiThread(() -> mFaviconLogo.setImageDrawable(mHindTypeIconTemp.getDrawable())); mContext.runOnUiThread(() -> {
Bitmap mBitmap = helperMethod.drawableToBitmap(mHindTypeIconTemp.getDrawable());
ByteArrayOutputStream out = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 20, out);
Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));
mFaviconLogo.setImageBitmap(decoded);
});
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -9,9 +9,7 @@ import android.view.MotionEvent;
import com.darkweb.genesissearchengine.constants.status; import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.helperManager.eventObserver; import com.darkweb.genesissearchengine.helperManager.eventObserver;
import org.mozilla.geckoview.GeckoView; import org.mozilla.geckoview.GeckoView;
import java.util.Collections; import java.util.Collections;
import static com.darkweb.genesissearchengine.constants.enums.etype.GECKO_SCROLL_CHANGED; import static com.darkweb.genesissearchengine.constants.enums.etype.GECKO_SCROLL_CHANGED;
public class NestedGeckoView extends GeckoView { public class NestedGeckoView extends GeckoView {
@ -48,6 +46,7 @@ public class NestedGeckoView extends GeckoView {
switch (action) { switch (action) {
case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_MOVE:
// mEvent.invokeObserver(Collections.singletonList(null), GECKO_SCROLL_FINISHED);
final boolean allowScroll = status.sFullScreenBrowsing; final boolean allowScroll = status.sFullScreenBrowsing;
int deltaY = mLastY - eventY; int deltaY = mLastY - eventY;
@ -76,15 +75,18 @@ public class NestedGeckoView extends GeckoView {
case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_DOWN:
mLastY = eventY; mLastY = eventY;
startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL); startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL);
// mEvent.invokeObserver(Collections.singletonList(null), GECKO_SCROLL_FINISHED);
break; break;
case MotionEvent.ACTION_UP: case MotionEvent.ACTION_UP:
// mEvent.invokeObserver(Collections.singletonList(null), GECKO_SCROLL_FINISHED);
case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_CANCEL:
// mEvent.invokeObserver(Collections.singletonList(null), GECKO_SCROLL_FINISHED);
stopNestedScroll(); stopNestedScroll();
break; break;
default: default:
// We don't care about other touch events // mEvent.invokeObserver(Collections.singletonList(null), GECKO_SCROLL_FINISHED);
} }
// Execute event handler from parent class in all cases // Execute event handler from parent class in all cases

View File

@ -14,6 +14,8 @@ import com.darkweb.genesissearchengine.helperManager.helperMethod;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
import static com.darkweb.genesissearchengine.constants.constants.CONST_REPORT_URL;
import static com.darkweb.genesissearchengine.constants.enums.etype.on_handle_external_intent; import static com.darkweb.genesissearchengine.constants.enums.etype.on_handle_external_intent;
import static org.mozilla.geckoview.GeckoSessionSettings.USER_AGENT_MODE_MOBILE; import static org.mozilla.geckoview.GeckoSessionSettings.USER_AGENT_MODE_MOBILE;
import static org.mozilla.geckoview.StorageController.ClearFlags.AUTH_SESSIONS; import static org.mozilla.geckoview.StorageController.ClearFlags.AUTH_SESSIONS;
@ -70,10 +72,10 @@ public class geckoClients
onUpdateFont(); onUpdateFont();
} }
public void onValidateInitializeFromStartup(){ public void onValidateInitializeFromStartup(NestedGeckoView mNestedGeckoView){
boolean mStatus = mSession.onValidateInitializeFromStartup(); boolean mStatus = mSession.onValidateInitializeFromStartup();
if(mStatus){ if(mStatus){
loadURL(mSession.getCurrentURL()); loadURL(mSession.getCurrentURL(), mNestedGeckoView);
} }
} }
@ -145,7 +147,7 @@ public class geckoClients
} }
@SuppressLint("WrongConstant") @SuppressLint("WrongConstant")
public void updateSetting(){ public void updateSetting(NestedGeckoView mNestedGeckoView){
mRuntime.getSettings().setRemoteDebuggingEnabled(false); mRuntime.getSettings().setRemoteDebuggingEnabled(false);
mRuntime.getSettings().setWebFontsEnabled(status.sShowWebFonts); mRuntime.getSettings().setWebFontsEnabled(status.sShowWebFonts);
mRuntime.getSettings().getContentBlocking().setCookieBehavior(getCookiesBehaviour()); mRuntime.getSettings().getContentBlocking().setCookieBehavior(getCookiesBehaviour());
@ -166,7 +168,7 @@ public class geckoClients
mSession.getSettings().setUserAgentMode(USER_AGENT_MODE_MOBILE ); mSession.getSettings().setUserAgentMode(USER_AGENT_MODE_MOBILE );
mSession.getSettings().setAllowJavascript(status.sSettingJavaStatus); mSession.getSettings().setAllowJavascript(status.sSettingJavaStatus);
onUpdateFont(); onUpdateFont();
onReload(); onReload(mNestedGeckoView);
} }
public void initSession(geckoSession mSession){ public void initSession(geckoSession mSession){
@ -190,22 +192,24 @@ public class geckoClients
mSession.initURL(url); mSession.initURL(url);
} }
public void loadURL(String url) { public void loadURL(String url, NestedGeckoView mNestedGeckoView) {
mSession = (geckoSession)mNestedGeckoView.getSession();
if(mSession==null){
return;
}
if(mSession.onGetInitializeFromStartup()){ if(mSession.onGetInitializeFromStartup()){
mSession.initURL(url); mSession.initURL(url);
if(url.startsWith("https://boogle.store/?pG") || url.startsWith("https://boogle.store?pG") || url.endsWith("boogle.store") || url.endsWith(constants.CONST_GENESIS_DOMAIN_URL_SLASHED)){ if(!url.startsWith(CONST_REPORT_URL) && (url.startsWith("https://boogle.store/?pG") || url.startsWith("https://boogle.store?pG") || url.endsWith("boogle.store") || url.endsWith(constants.CONST_GENESIS_DOMAIN_URL_SLASHED))){
try{ try{
mSession.initURL(constants.CONST_GENESIS_DOMAIN_URL); mSession.initURL(constants.CONST_GENESIS_DOMAIN_URL);
if(status.sTheme == enums.Theme.THEME_LIGHT || helperMethod.isDayMode(context)){ if(status.sTheme == enums.Theme.THEME_LIGHT || helperMethod.isDayMode(context)){
String mURL = constants.CONST_GENESIS_URL_CACHED + "?pData="+ dataController.getInstance().invokeReferenceWebsite(dataEnums.eReferenceWebsiteCommands.M_FETCH,null); String mURL = constants.CONST_GENESIS_URL_CACHED + "?pData="+ dataController.getInstance().invokeReferenceWebsite(dataEnums.eReferenceWebsiteCommands.M_FETCH,null);
mSession.getSettings().setAllowJavascript(true); mSession.getSettings().setAllowJavascript(true);
mSession.loadUri(mURL); mSession.loadUri(mURL);
return;
}else { }else {
String mURL = constants.CONST_GENESIS_URL_CACHED_DARK + "?pData="+ dataController.getInstance().invokeReferenceWebsite(dataEnums.eReferenceWebsiteCommands.M_FETCH,null); String mURL = constants.CONST_GENESIS_URL_CACHED_DARK + "?pData="+ dataController.getInstance().invokeReferenceWebsite(dataEnums.eReferenceWebsiteCommands.M_FETCH,null);
mSession.getSettings().setAllowJavascript(true); mSession.getSettings().setAllowJavascript(true);
mSession.loadUri(mURL); mSession.loadUri(mURL);
return;
} }
}catch (Exception ex){ }catch (Exception ex){
ex.printStackTrace(); ex.printStackTrace();
@ -217,19 +221,17 @@ public class geckoClients
if(status.sTheme == enums.Theme.THEME_LIGHT || helperMethod.isDayMode(context)){ if(status.sTheme == enums.Theme.THEME_LIGHT || helperMethod.isDayMode(context)){
mSession.getSettings().setAllowJavascript(true); mSession.getSettings().setAllowJavascript(true);
mSession.loadUri(constants.CONST_GENESIS_HELP_URL_CACHE); mSession.loadUri(constants.CONST_GENESIS_HELP_URL_CACHE);
return;
}else { }else {
mSession.getSettings().setAllowJavascript(true); mSession.getSettings().setAllowJavascript(true);
mSession.loadUri(constants.CONST_GENESIS_HELP_URL_CACHE_DARK); mSession.loadUri(constants.CONST_GENESIS_HELP_URL_CACHE_DARK);
return;
} }
}catch (Exception ex){ }catch (Exception ex){
ex.printStackTrace(); ex.printStackTrace();
} }
}else { }else {
mSession.getSettings().setAllowJavascript(status.sSettingJavaStatus);
mSession.loadUri(url); mSession.loadUri(url);
} }
mSession.getSettings().setAllowJavascript(status.sSettingJavaStatus);
} }
} }
@ -310,9 +312,9 @@ public class geckoClients
mSession.stop(); mSession.stop();
} }
public void onReload(){ public void onReload(NestedGeckoView mNestedGeckoView){
mSession.stop(); mSession.stop();
loadURL(mSession.getCurrentURL()); loadURL(mSession.getCurrentURL(), mNestedGeckoView);
} }
public void manual_download(String url, AppCompatActivity context){ public void manual_download(String url, AppCompatActivity context){
@ -361,7 +363,10 @@ public class geckoClients
@Override @Override
public Object invokeObserver(List<Object> data, Object e_type) public Object invokeObserver(List<Object> data, Object e_type)
{ {
if (mSessionID!=null && mSessionID.equals(data.get(1)) || e_type.equals(enums.etype.FINDER_RESULT_CALLBACK) || e_type.equals(enums.etype.ON_UPDATE_TAB_TITLE) || e_type.equals(enums.etype.on_update_favicon) ||e_type.equals(enums.etype.on_update_history) || e_type.equals(enums.etype.on_request_completed) || e_type.equals(enums.etype.on_update_suggestion) || e_type.equals(enums.etype.on_update_suggestion_url)) if(e_type.equals(enums.etype.SESSION_ID)){
return mSession.getSessionID();
}
else if (mSessionID!=null && mSessionID.equals(data.get(1)) || e_type.equals(enums.etype.FINDER_RESULT_CALLBACK) || e_type.equals(enums.etype.ON_UPDATE_TAB_TITLE) || e_type.equals(enums.etype.on_update_favicon) ||e_type.equals(enums.etype.on_update_history) || e_type.equals(enums.etype.on_request_completed) || e_type.equals(enums.etype.on_update_suggestion) || e_type.equals(enums.etype.on_update_suggestion_url))
{ {
if (e_type.equals(on_handle_external_intent)) if (e_type.equals(on_handle_external_intent))
{ {

View File

@ -23,6 +23,8 @@ import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue; import android.view.autofill.AutofillValue;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.AnyThread;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.UiThread; import androidx.annotation.UiThread;
@ -95,6 +97,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
private String mTheme = null; private String mTheme = null;
private boolean mPreviousErrorPage = false; private boolean mPreviousErrorPage = false;
private boolean mRemovableFromBackPressed = false; private boolean mRemovableFromBackPressed = false;
private boolean mThemeChanged = false;
/*Temp Variables*/ /*Temp Variables*/
private GeckoSession.HistoryDelegate.HistoryList mHistoryList = null; private GeckoSession.HistoryDelegate.HistoryList mHistoryList = null;
@ -120,6 +123,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
setContentDelegate(this); setContentDelegate(this);
setAutoFillDelegate(); setAutoFillDelegate();
setPermissionDelegate(this); setPermissionDelegate(this);
setScrollDelegate(this);
mDownloadManager = new geckoDownloadManager(); mDownloadManager = new geckoDownloadManager();
setPromptDelegate(new geckoPromptView(mContext)); setPromptDelegate(new geckoPromptView(mContext));
} }
@ -148,6 +152,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
} }
public void onSessionReinit(){ public void onSessionReinit(){
mCrashCount = 0;
if(!isFirstPaintExecuted){ if(!isFirstPaintExecuted){
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id), enums.etype.ON_SESSION_REINIT); event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id), enums.etype.ON_SESSION_REINIT);
}else { }else {
@ -164,6 +169,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
void initURL(String url){ void initURL(String url){
if(mIsLoaded){ if(mIsLoaded){
mCrashCount = 0;
isPageLoading = true; isPageLoading = true;
setURL(url); setURL(url);
mCurrentTitle = mCurrentURL; mCurrentTitle = mCurrentURL;
@ -179,6 +185,10 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
} }
/*Scroll Delegate*/ /*Scroll Delegate*/
@UiThread
public void onScrollChanged(@NonNull GeckoSession session, int scrollX, int scrollY) {
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme), enums.etype.M_UPDATE_PIXEL_BACKGROUND);
}
/*Autofill Delegate*/ /*Autofill Delegate*/
@ -251,13 +261,15 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
if(!isPageLoading){ if(!isPageLoading){
mCurrentTitle = "loading"; mCurrentTitle = "loading";
m_current_url_id = -1; m_current_url_id = -1;
mTheme = null; //mTheme = null;
mThemeChanged = false;
} }
isPageLoading = true; isPageLoading = true;
if(!var2.equals("about:blank") && !mCurrentTitle.equals("loading")){ if(!var2.equals("about:blank") && !mCurrentTitle.equals("loading")){
mProgress = 5; mProgress = 5;
event.invokeObserver(Arrays.asList(5, mSessionID), enums.etype.progress_update); event.invokeObserver(Arrays.asList(5, mSessionID), enums.etype.progress_update);
mTheme = null; //mTheme = null;
mThemeChanged = false;
} }
} }
} }
@ -266,13 +278,24 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
public void onPageStop(@NonNull GeckoSession var1, boolean var2) { public void onPageStop(@NonNull GeckoSession var1, boolean var2) {
if(var2){ if(var2){
if(mProgress>=100){ if(mProgress>=100){
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, mTheme), enums.etype.ON_UPDATE_THEME); //event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, mTheme), enums.etype.ON_UPDATE_THEME);
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme), enums.etype.on_update_favicon); event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme), enums.etype.on_update_favicon);
event.invokeObserver(Arrays.asList(null,mSessionID), enums.etype.on_page_loaded); event.invokeObserver(Arrays.asList(null,mSessionID), enums.etype.on_page_loaded);
if(!mThemeChanged){
new Handler().postDelayed(() ->
{
if(!mThemeChanged){
mTheme = null;
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, mTheme), enums.etype.ON_UPDATE_THEME);
}
}, 500);
}
} }
} }
} }
@Override @Override
public void onProgressChange(@NonNull GeckoSession session, int progress) public void onProgressChange(@NonNull GeckoSession session, int progress)
{ {
@ -283,6 +306,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
if(!mIsProgressBarChanging){ if(!mIsProgressBarChanging){
mIsProgressBarChanging = true; mIsProgressBarChanging = true;
mContext.runOnUiThread(() -> event.invokeObserver(Arrays.asList(mProgress,mSessionID), enums.etype.progress_update)); mContext.runOnUiThread(() -> event.invokeObserver(Arrays.asList(mProgress,mSessionID), enums.etype.progress_update));
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme), enums.etype.M_UPDATE_PIXEL_BACKGROUND);
} }
}else { }else {
mIsProgressBarChanging = false; mIsProgressBarChanging = false;
@ -315,6 +339,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
mHistoryList = var2; mHistoryList = var2;
} }
/*Navigation Delegate*/ /*Navigation Delegate*/
public void onLocationChange(@NonNull GeckoSession var1, @Nullable String var2) { public void onLocationChange(@NonNull GeckoSession var1, @Nullable String var2) {
@ -461,8 +486,8 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
@UiThread @UiThread
public void onFirstContentfulPaint(@NonNull GeckoSession var1) { public void onFirstContentfulPaint(@NonNull GeckoSession var1) {
isFirstPaintExecuted = true;
isFirstPaintExecuted = true;
if(mPreviousErrorPage || mCurrentURL.contains("boogle.store") || mCurrentURL.startsWith(CONST_GENESIS_URL_CACHED) || mCurrentURL.startsWith(CONST_GENESIS_URL_CACHED_DARK) || mCurrentURL.startsWith(CONST_GENESIS_HELP_URL_CACHE) || mCurrentURL.toString().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){ if(mPreviousErrorPage || mCurrentURL.contains("boogle.store") || mCurrentURL.startsWith(CONST_GENESIS_URL_CACHED) || mCurrentURL.startsWith(CONST_GENESIS_URL_CACHED_DARK) || mCurrentURL.startsWith(CONST_GENESIS_HELP_URL_CACHE) || mCurrentURL.toString().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, false), enums.etype.M_ON_BANNER_UPDATE); event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, false), enums.etype.M_ON_BANNER_UPDATE);
}else { }else {
@ -475,6 +500,8 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
}else { }else {
onSessionReinit(); onSessionReinit();
} }
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme), enums.etype.M_UPDATE_PIXEL_BACKGROUND);
} }
@UiThread @UiThread
@ -485,9 +512,12 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
@UiThread @UiThread
public void onWebAppManifest(@NonNull GeckoSession var1, @NonNull JSONObject var2) { public void onWebAppManifest(@NonNull GeckoSession var1, @NonNull JSONObject var2) {
try { try {
mThemeChanged = true;
mTheme = var2.getString("theme_color"); mTheme = var2.getString("theme_color");
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, mTheme), enums.etype.ON_UPDATE_THEME); event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, mTheme), enums.etype.ON_UPDATE_THEME);
} catch (Exception ex) { } catch (Exception ex) {
mTheme = null;
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, mTheme), enums.etype.ON_UPDATE_THEME);
ex.printStackTrace(); ex.printStackTrace();
} }
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme), enums.etype.ON_UPDATE_TAB_TITLE); event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme), enums.etype.ON_UPDATE_TAB_TITLE);
@ -509,6 +539,39 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
} }
} }
int mCrashCount = 0;
@UiThread
public void onCrash(@NonNull GeckoSession session) {
String mSessionID = (String) event.invokeObserver(null, enums.etype.SESSION_ID);
if(mSessionID.equals(getSessionID())){
if(mCrashCount<=5){
final Handler handler = new Handler();
handler.postDelayed(() -> {
if(!session.isOpen()){
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme, this), enums.etype.M_OPEN_SESSION);
}
}, mCrashCount*500);
}
mCrashCount+=1;
}
}
@UiThread
public void onKill(@NonNull GeckoSession session) {
String mSessionID = (String) event.invokeObserver(null, enums.etype.SESSION_ID);
if(mSessionID.equals(getSessionID())){
if(mCrashCount<=5){
final Handler handler = new Handler();
handler.postDelayed(() -> {
if(!session.isOpen()){
event.invokeObserver(Arrays.asList(mCurrentURL,mSessionID,mCurrentTitle, m_current_url_id, mTheme, this), enums.etype.M_OPEN_SESSION);
}
}, mCrashCount*500);
}
mCrashCount+=1;
}
}
@Override @Override
public void onFullScreen(@NonNull GeckoSession var1, boolean var2) { public void onFullScreen(@NonNull GeckoSession var1, boolean var2) {
mFullScreen = var2; mFullScreen = var2;
@ -786,7 +849,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
try { try {
mCounter+=1; mCounter+=1;
sleep(100); sleep(100);
if(mCounter>10){ if(mCounter>100){
return; return;
} }
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -795,7 +858,8 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
} }
try { try {
FinderResult mResult = mFinder.poll(); FinderResult mResult = mFinder.poll(1000);
Log.i("FUCK","FUCK : " + mResult.found + "----" + mResult.current + "-----" + mResult.total);
event.invokeObserver(Arrays.asList(mResult.total, mResult.current), enums.etype.FINDER_RESULT_CALLBACK); event.invokeObserver(Arrays.asList(mResult.total, mResult.current), enums.etype.FINDER_RESULT_CALLBACK);
} catch (Throwable throwable) { } catch (Throwable throwable) {
throwable.printStackTrace(); throwable.printStackTrace();

View File

@ -2,6 +2,8 @@ package com.darkweb.genesissearchengine.appManager.homeManager.hintManager;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -15,6 +17,8 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.room.Ignore;
import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel; import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel;
import com.darkweb.genesissearchengine.appManager.tabManager.tabEnums; import com.darkweb.genesissearchengine.appManager.tabManager.tabEnums;
import com.darkweb.genesissearchengine.constants.enums; import com.darkweb.genesissearchengine.constants.enums;
@ -22,6 +26,9 @@ import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.helperManager.eventObserver; import com.darkweb.genesissearchengine.helperManager.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod; import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.example.myapplication.R; import com.example.myapplication.R;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
@ -95,7 +102,7 @@ public class hintAdapter extends RecyclerView.Adapter<hintAdapter.listViewHolder
super(itemView); super(itemView);
} }
@SuppressLint("ClickableViewAccessibility") @SuppressLint({"ClickableViewAccessibility", "UseCompatLoadingForDrawables"})
void bindListView(historyRowModel model) { void bindListView(historyRowModel model) {
mHeader = itemView.findViewById(R.id.pHeader); mHeader = itemView.findViewById(R.id.pHeader);
mHeaderSingle = itemView.findViewById(R.id.pHeaderSingle); mHeaderSingle = itemView.findViewById(R.id.pHeaderSingle);
@ -164,39 +171,49 @@ public class hintAdapter extends RecyclerView.Adapter<hintAdapter.listViewHolder
} }
if(!mWebIcon.containsKey(mURLLink)){ if(!mWebIcon.containsKey(mURLLink)){
new Thread(){ if(mURLLink.contains("boogle.store") || mURLLink.contains("genesis.onion")){
public void run(){ mHintWebIcon.setColorFilter(null);
try { mHintWebIcon.clearColorFilter();
mHindTypeIconTemp.setImageDrawable(null); mHintWebIcon.setImageTintList(null);
mEvent.invokeObserver(Arrays.asList(mHindTypeIconTemp, "https://" + helperMethod.getDomainName(model.getDescription())), enums.etype.fetch_favicon); mHintWebIcon.setClipToOutline(true);
while (true){ mHintWebIcon.setImageDrawable(itemView.getResources().getDrawable(R.drawable.genesis));
int mCounter=0; }else
if(mHindTypeIconTemp.isAttachedToWindow() || mHindTypeIconTemp.getDrawable()==null){ {
sleep(10); new Thread(){
mCounter+=1; public void run(){
}else { try {
Log.i("BREAK",""); mHindTypeIconTemp.setImageDrawable(null);
break; mEvent.invokeObserver(Arrays.asList(mHindTypeIconTemp, "https://" + helperMethod.getDomainName(model.getDescription())), enums.etype.fetch_favicon);
} while (true){
if(mCounter>6){ int mCounter=0;
break; if(mHindTypeIconTemp.isAttachedToWindow() || mHindTypeIconTemp.getDrawable()==null){
sleep(10);
mCounter+=1;
}else {
Log.i("BREAK","");
break;
}
if(mCounter>6){
break;
}
} }
mContext.runOnUiThread(() -> {
mHintWebIcon.setColorFilter(null);
mHintWebIcon.clearColorFilter();
mHintWebIcon.setImageTintList(null);
mHintWebIcon.setClipToOutline(true);
mWebIcon.put(mURLLink,mHindTypeIconTemp.getDrawable());
mHintWebIcon.setImageDrawable(mHindTypeIconTemp.getDrawable());
});
} catch (InterruptedException e) {
e.printStackTrace();
} }
mContext.runOnUiThread(() -> {
mHintWebIcon.setColorFilter(null);
mHintWebIcon.clearColorFilter();
mHintWebIcon.setImageTintList(null);
mHintWebIcon.setClipToOutline(true);
mHintWebIcon.setImageDrawable(mHindTypeIconTemp.getDrawable());
mWebIcon.put(mURLLink,mHindTypeIconTemp.getDrawable());
});
} catch (InterruptedException e) {
e.printStackTrace();
} }
} }.start();
}.start(); }
} }
} }

View File

@ -89,7 +89,6 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE_DARK; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE_DARK;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_URL_CACHED; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_URL_CACHED;
@ -97,6 +96,7 @@ import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_
import static com.darkweb.genesissearchengine.constants.enums.etype.GECKO_SCROLL_CHANGED; import static com.darkweb.genesissearchengine.constants.enums.etype.GECKO_SCROLL_CHANGED;
import static com.darkweb.genesissearchengine.constants.enums.etype.M_INITIALIZE_TAB_LINK; import static com.darkweb.genesissearchengine.constants.enums.etype.M_INITIALIZE_TAB_LINK;
import static com.darkweb.genesissearchengine.constants.enums.etype.M_INITIALIZE_TAB_SINGLE; import static com.darkweb.genesissearchengine.constants.enums.etype.M_INITIALIZE_TAB_SINGLE;
import static com.darkweb.genesissearchengine.constants.enums.etype.ON_OPEN_TAB_VIEW;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManager.*; import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManager.*;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManagerCallbacks.M_RATE_APPLICATION; import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManagerCallbacks.M_RATE_APPLICATION;
import static java.lang.Character.isLetter; import static java.lang.Character.isLetter;
@ -157,7 +157,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba
private boolean isFocusChanging = false; private boolean isFocusChanging = false;
private boolean mAppRestarted = false; private boolean mAppRestarted = false;
private boolean mSearchBarLoading = false; private boolean mSearchBarLoading = false;
private boolean mSearchBarWasBackButtonPressed = false;
private String mSearchBarPreviousText = strings.GENERIC_EMPTY_STR; private String mSearchBarPreviousText = strings.GENERIC_EMPTY_STR;
private Handler mScrollHandler = null;
private Runnable mScrollRunnable = null;
/*-------------------------------------------------------INITIALIZATION-------------------------------------------------------*/ /*-------------------------------------------------------INITIALIZATION-------------------------------------------------------*/
@ -266,21 +269,39 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
public void onLoadTabFromTabController(){ public void onLoadTabFromTabController(){
Object mTempModel = dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_CURRENT_TAB, null);
if(mTempModel!=null){
tabRowModel model = (tabRowModel)mTempModel;
mGeckoView.releaseSession(); Object mTempModel = dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_CURRENT_TAB, null);
mGeckoClient.initSession(model.getSession()); if(mTempModel!=null){
mGeckoView.setSession(model.getSession()); tabRowModel model = (tabRowModel)mTempModel;
mHomeViewController.onUpdateSearchBar(model.getSession().getCurrentURL(), false, false, false); if(model.getSession().onGetInitializeFromStartup()){
mGeckoClient.getmRuntime();
mGeckoClient.initSession(model.getSession());
mGeckoView.releaseSession();
mGeckoView.setSession(model.getSession());
if(model.getSession().getCurrentURL().contains("boogle.store") || mGeckoClient.wasPreviousErrorPage() || model.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED) || model.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED_DARK) || model.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE) || model.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){ if(!model.getSession().isOpen()){
mHomeViewController.updateBannerAdvertStatus(false, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED)); model.getSession().open(mGeckoClient.getmRuntime());
onLoadURL(model.getSession().getCurrentURL());
}
mGeckoClient.onValidateInitializeFromStartup(mGeckoView);
mGeckoClient.onSessionReinit();
}
if(mGeckoClient.getSession().getCurrentURL().equals("about:blank") || mGeckoClient.getSession().getCurrentURL().contains("boogle.store") || mGeckoClient.wasPreviousErrorPage() || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED_DARK) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){
mHomeViewController.updateBannerAdvertStatus(false, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
if(model.getSession().onGetInitializeFromStartup()) {
mHomeViewController.progressBarReset();
}
}else {
mHomeViewController.updateBannerAdvertStatus(true, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
}
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),false,false,false);
}else { }else {
mHomeViewController.updateBannerAdvertStatus(true, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED)); if(status.sSettingSearchStatus.equals(constants.CONST_BACKEND_GENESIS_URL)){
mHomeViewController.updateBannerAdvertStatus(false, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
}
} }
}
} }
public void onLoadTabOnResume(){ public void onLoadTabOnResume(){
@ -296,7 +317,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
onNewIntent(getIntent()); onNewIntent(getIntent());
onOpenLinkNewTab(helperMethod.getDomainName(mHomeModel.getSearchEngine())); onOpenLinkNewTab(helperMethod.getDomainName(mHomeModel.getSearchEngine()));
} }
initTabCount(); initTabCountForced();
if(!status.mThemeApplying){ if(!status.mThemeApplying){
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(), false, false, false); mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(), false, false, false);
} }
@ -408,7 +429,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.initialization(new homeViewCallback(),this,mNewTab, mWebViewContainer, mLoadingText, mProgressBar, mSearchbar, mSplashScreen, mLoadingIcon, mBannerAds, mGatewaySplash, mTopBar, mGeckoView, mBackSplash, mConnectButton, mFindBar, mFindText, mFindCount, mTopLayout, mVoiceInput, mMenu, mNestedScroll, mBlocker, mBlockerFullSceen, mSearchEngineBar, mCopyright, mHintListView, mAppBar, mOrbotLogManager, mInfoLandscape, mInfoPortrait, mProgressBarIndeterminate, mTabFragment, mTopBarContainer, mSearchLock, mPopupLoadNewTab, mTopBarHider); mHomeViewController.initialization(new homeViewCallback(),this,mNewTab, mWebViewContainer, mLoadingText, mProgressBar, mSearchbar, mSplashScreen, mLoadingIcon, mBannerAds, mGatewaySplash, mTopBar, mGeckoView, mBackSplash, mConnectButton, mFindBar, mFindText, mFindCount, mTopLayout, mVoiceInput, mMenu, mNestedScroll, mBlocker, mBlockerFullSceen, mSearchEngineBar, mCopyright, mHintListView, mAppBar, mOrbotLogManager, mInfoLandscape, mInfoPortrait, mProgressBarIndeterminate, mTabFragment, mTopBarContainer, mSearchLock, mPopupLoadNewTab, mTopBarHider);
mGeckoView.onSetHomeEvent(new nestedGeckoViewCallback()); mGeckoView.onSetHomeEvent(new nestedGeckoViewCallback());
mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,false); mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,false);
mGeckoClient.onValidateInitializeFromStartup(); mGeckoClient.onValidateInitializeFromStartup(mGeckoView);
dataController.getInstance().initializeListData(); dataController.getInstance().initializeListData();
} }
@ -451,12 +472,12 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void initializeGeckoView(boolean isForced, boolean pDatabaseSavable){ public void initializeGeckoView(boolean isForced, boolean pDatabaseSavable){
mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,isForced); mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,isForced);
onSaveCurrentTab(mGeckoClient.getSession(),pDatabaseSavable); onSaveCurrentTab(mGeckoClient.getSession(),pDatabaseSavable);
mHomeViewController.initTab((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null), false); initTabCountForced();
} }
public void initTab(boolean isKeyboardOpened){ public void initTab(boolean isKeyboardOpened){
postNewTabAnimation(isKeyboardOpened, false); postNewTabAnimation(isKeyboardOpened, false);
mHomeViewController.initTab((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null), false); initTabCountForced();
} }
@Override @Override
@ -479,13 +500,14 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void onGetThumbnail(ImageView pImageView,boolean pLoadTabView){ public void onGetThumbnail(ImageView pImageView,boolean pLoadTabView){
try{ try{
mRenderedBitmap = mGeckoView.capturePixels(); mRenderedBitmap = mGeckoView.capturePixels();
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_UPDATE_PIXEL, Arrays.asList(mGeckoClient.getSession().getSessionID(), mRenderedBitmap, pImageView, mGeckoView, pLoadTabView)); }catch (Exception ignored){}
}catch (Exception ex){ if(mScrollHandler!=null){
ex.printStackTrace(); mScrollHandler.removeCallbacksAndMessages(null);
if(pLoadTabView){
onOpenTabReady();
}
} }
new Handler().postDelayed(() ->
{
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_UPDATE_PIXEL, Arrays.asList(mGeckoClient.getSession().getSessionID(), mRenderedBitmap, pImageView, mGeckoView, pLoadTabView));
}, 100);
} }
@ -502,7 +524,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void initRuntimeSettings() public void initRuntimeSettings()
{ {
mGeckoClient.updateSetting(); mGeckoClient.updateSetting(mGeckoView);
} }
public void onReDrawGeckoview(){ public void onReDrawGeckoview(){
@ -511,15 +533,14 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
public void onLoadURL(String url){ public void onLoadURL(String url){
if(mGeckoView.getSession()!=null && !mGeckoView.getSession().isOpen()){
if(mGeckoView!=null && mGeckoView.getSession()!=null && !mGeckoView.getSession().isOpen()){
mGeckoView.getSession().open(mGeckoClient.getmRuntime()); mGeckoView.getSession().open(mGeckoClient.getmRuntime());
} }
mAppBar.animate().cancel(); mAppBar.animate().cancel();
mHomeViewController.onClearSelections(true); mHomeViewController.onClearSelections(true);
Objects.requireNonNull(mGeckoView.getSession()).stop(); Objects.requireNonNull(mGeckoView.getSession()).stop();
mGeckoClient.loadURL(url.replace("genesis.onion","boogle.store")); mGeckoClient.loadURL(url.replace("genesis.onion","boogle.store"),mGeckoView);
} }
public void onLoadTab(geckoSession mTempSession, boolean isSessionClosed, boolean pExpandAppBar){ public void onLoadTab(geckoSession mTempSession, boolean isSessionClosed, boolean pExpandAppBar){
@ -546,7 +567,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.progressBarReset(); mHomeViewController.progressBarReset();
} }
mGeckoClient.onValidateInitializeFromStartup(); mGeckoClient.onValidateInitializeFromStartup(mGeckoView);
mGeckoClient.onSessionReinit(); mGeckoClient.onSessionReinit();
mHomeViewController.onUpdateStatusBarTheme(mTempSession.getTheme(), false); mHomeViewController.onUpdateStatusBarTheme(mTempSession.getTheme(), false);
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(), false, false, false); mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(), false, false, false);
@ -560,7 +581,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.expandTopBar(); mHomeViewController.expandTopBar();
} }
if(mGeckoClient.getSession().getCurrentURL().contains("boogle.store") || mGeckoClient.wasPreviousErrorPage() || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED_DARK) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){ if(mGeckoClient.getSession().getCurrentURL().equals("about:blank") || mGeckoClient.getSession().getCurrentURL().contains("boogle.store") || mGeckoClient.wasPreviousErrorPage() || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED_DARK) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){
mHomeViewController.updateBannerAdvertStatus(false, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED)); mHomeViewController.updateBannerAdvertStatus(false, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
}else { }else {
mHomeViewController.updateBannerAdvertStatus(true, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED)); mHomeViewController.updateBannerAdvertStatus(true, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
@ -610,7 +631,6 @@ public class homeController extends AppCompatActivity implements ComponentCallba
case TRIM_MEMORY_MODERATE: case TRIM_MEMORY_MODERATE:
Log.i("wow : ", "trim memory requested: clean up some memory"); Log.i("wow : ", "trim memory requested: clean up some memory");
break; break;
case TRIM_MEMORY_RUNNING_CRITICAL: case TRIM_MEMORY_RUNNING_CRITICAL:
Log.i("wow : ", "trim memory requested: memory on device is very low and critical"); Log.i("wow : ", "trim memory requested: memory on device is very low and critical");
break; break;
@ -648,6 +668,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mNewTab.setOnTouchListener((v, event) -> { mNewTab.setOnTouchListener((v, event) -> {
if(event.getAction() == MotionEvent.ACTION_DOWN){ if(event.getAction() == MotionEvent.ACTION_DOWN){
onOpenTabViewBoundary(null); onOpenTabViewBoundary(null);
initTabCount(null, null);
} }
return false; return false;
}); });
@ -779,6 +800,12 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mSearchbar.setOnFocusChangeListener((v, hasFocus) -> { mSearchbar.setOnFocusChangeListener((v, hasFocus) -> {
if(!hasFocus) if(!hasFocus)
{ {
mSearchBarWasBackButtonPressed = true;
new Handler().postDelayed(() ->
{
mSearchBarWasBackButtonPressed = false;
}, 100);
if(!isSuggestionSearchOpened){ if(!isSuggestionSearchOpened){
if(isSuggestionChanged){ if(isSuggestionChanged){
isSuggestionChanged = false; isSuggestionChanged = false;
@ -795,6 +822,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
mSearchbar.setSelection(0); mSearchbar.setSelection(0);
}else { }else {
mSearchBarWasBackButtonPressed = false;
if(!isFocusChanging){ if(!isFocusChanging){
if(!status.mThemeApplying){ if(!status.mThemeApplying){
mHomeViewController.initSearchBarFocus(true, isKeyboardOpened); mHomeViewController.initSearchBarFocus(true, isKeyboardOpened);
@ -822,6 +850,15 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}); });
KeyboardUtils.addKeyboardToggleListener(this, isVisible -> isKeyboardOpened = isVisible); KeyboardUtils.addKeyboardToggleListener(this, isVisible -> isKeyboardOpened = isVisible);
mNestedScroll.setOnScrollChangeListener((NestedScrollView.OnScrollChangeListener) (v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
if(v.getChildAt(v.getChildCount() - 1) != null) {
if ((scrollY >= (v.getChildAt(v.getChildCount() - 1).getMeasuredHeight() - v.getMeasuredHeight())) &&
scrollY > oldScrollY) {
}
}
});
} }
private ArrayList<historyRowModel> mSuggestions; private ArrayList<historyRowModel> mSuggestions;
@ -862,6 +899,9 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
public void onHomeButton(View view){ public void onHomeButton(View view){
mGeckoClient.getSession().setTheme(null);
mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(), true);
onLoadURL(helperMethod.getDomainName(mHomeModel.getSearchEngine())); onLoadURL(helperMethod.getDomainName(mHomeModel.getSearchEngine()));
mHomeViewController.onUpdateLogo(); mHomeViewController.onUpdateLogo();
} }
@ -910,15 +950,16 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGeckoView.getSession().open(mGeckoClient.getmRuntime()); mGeckoView.getSession().open(mGeckoClient.getmRuntime());
} }
onLoadURL(helperMethod.getDomainName(status.sSettingSearchStatus));
mHomeViewController. onUpdateSearchBar(helperMethod.getDomainName(status.sSettingSearchStatus),false,true, false); mHomeViewController. onUpdateSearchBar(helperMethod.getDomainName(status.sSettingSearchStatus),false,true, false);
onLoadURL(helperMethod.getDomainName(status.sSettingSearchStatus));
mGeckoView.getSession().setActive(true);
}else { }else {
onLoadURL("about:blank"); onLoadURL("about:blank");
mHomeViewController. onUpdateSearchBar(strings.HOME_BLANK_PAGE,false,true, false); mHomeViewController. onUpdateSearchBar(strings.HOME_BLANK_PAGE,false,true, false);
mHomeViewController.onNewTab(); mHomeViewController.onNewTab();
} }
mHomeViewController.progressBarReset(); mHomeViewController.progressBarReset();
mHomeViewController.onSessionChanged();
mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(), false); mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(), false);
} }
@ -927,7 +968,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
initializeGeckoView(true, true); initializeGeckoView(true, true);
mHomeViewController.progressBarReset(); mHomeViewController.progressBarReset();
mHomeViewController.onUpdateSearchBar(url,false,true, false); mHomeViewController.onUpdateSearchBar(url,false,true, false);
mGeckoClient.loadURL(url); mGeckoClient.loadURL(url, mGeckoView);
if(isRemovable){ if(isRemovable){
mGeckoClient.setRemovableFromBackPressed(true); mGeckoClient.setRemovableFromBackPressed(true);
@ -946,24 +987,29 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,true); mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,true);
mHomeViewController.progressBarReset(); mHomeViewController.progressBarReset();
mGeckoClient.initURL(url); mGeckoClient.initURL(url);
mGeckoClient.loadURL(url); mGeckoClient.loadURL(url, mGeckoView);
mGeckoClient.getSession().setURL(url); mGeckoClient.getSession().setURL(url);
onSaveCurrentTab(mGeckoClient.getSession(),false); onSaveCurrentTab(mGeckoClient.getSession(),false);
onLoadTab(mSession,false,false); onLoadTab(mSession,false,false);
mAppBar.setTag(R.id.expandableBar,true); mAppBar.setTag(R.id.expandableBar,true);
initTabCount(); initTabCountForced();
mHomeViewController.onUpdateSearchBar(mSession.getCurrentURL(),false,true, false); mHomeViewController.onUpdateSearchBar(mSession.getCurrentURL(),false,true, false);
} }
public void onNewTab(boolean isKeyboardOpenedTemp, boolean isKeyboardOpened){ public void onNewTab(boolean isKeyboardOpenedTemp, boolean isKeyboardOpened){
try {
onGetThumbnail(null, false);
}catch (Exception ignored){}
final Handler handler = new Handler(); mRenderedBitmap = mGeckoView.capturePixels();
handler.postDelayed(() -> mHomeViewController.onNewTabAnimation(Arrays.asList(isKeyboardOpenedTemp, isKeyboardOpened), M_INITIALIZE_TAB_SINGLE), 100); new Handler().postDelayed(() ->
{
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_UPDATE_PIXEL, Arrays.asList(mGeckoClient.getSession().getSessionID(), mRenderedBitmap, null, mGeckoView, false));
mHomeViewController.onNewTabAnimation(Arrays.asList(isKeyboardOpenedTemp, isKeyboardOpened), M_INITIALIZE_TAB_SINGLE);
}, 100);
}
public void onUpdateScreenPixel(){
} }
public void onNewTabBackground(boolean isKeyboardOpenedTemp, boolean isKeyboardOpened){ public void onNewTabBackground(boolean isKeyboardOpenedTemp, boolean isKeyboardOpened){
@ -980,21 +1026,24 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
public void onOpenTabViewBoundary(View view){ public void onOpenTabViewBoundary(View view){
onGetThumbnail(null, true); onInvokePixelGenerator();
mGeckoClient.onRedrawPixel();
mNewTab.setPressed(true); mNewTab.setPressed(true);
onOpenTabReady();
} }
public void onOpenTabReady(){ public void onOpenTabReady(){
if(!status.mThemeApplying){ if(!status.mThemeApplying){
runOnUiThread(() -> { runOnUiThread(() -> {
activityContextManager.getInstance().getTabController().onInit();
mHomeViewController.onShowTabContainer(); mHomeViewController.onShowTabContainer();
// overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out); activityContextManager.getInstance().getTabController().onInit();
}); });
} }
} }
public void onLoadFirstElement(){
activityContextManager.getInstance().getTabController().onInitFirstElement();
}
public void onLockSecure(View view){ public void onLockSecure(View view){
pluginController.getInstance().onMessageManagerInvoke(Arrays.asList(mGeckoClient.getSession().getCurrentURL(), status.sSettingJavaStatus, status.sStatusDoNotTrack, status.sSettingTrackingProtection, status.sSettingCookieStatus, this), M_SECURE_CONNECTION); pluginController.getInstance().onMessageManagerInvoke(Arrays.asList(mGeckoClient.getSession().getCurrentURL(), status.sSettingJavaStatus, status.sStatusDoNotTrack, status.sSettingTrackingProtection, status.sSettingCookieStatus, this), M_SECURE_CONNECTION);
} }
@ -1033,14 +1082,17 @@ public class homeController extends AppCompatActivity implements ComponentCallba
@Override @Override
public void onBackPressed(){ public void onBackPressed(){
if(mTabFragment.getVisibility()==View.VISIBLE){ if(mTabFragment.getVisibility()==View.VISIBLE){
onResumeDump(); if(activityContextManager.getInstance().getTabController().getSelectionCount()>0){
mHomeViewController.onHideTabContainer(); activityContextManager.getInstance().getTabController().onClearSelection(null);
activityContextManager.getInstance().getTabController().onPostExit(); }else {
activityContextManager.getInstance().getTabController().onBackPressed(); onResumeDump();
mHomeViewController.onHideTabContainer();
activityContextManager.getInstance().getTabController().onPostExit();
activityContextManager.getInstance().getTabController().onBackPressed();
}
return; return;
} }
mSearchbar.clearFocus();
if(mFindBar!=null && mFindBar.getVisibility() == View.VISIBLE){ if(mFindBar!=null && mFindBar.getVisibility() == View.VISIBLE){
mHomeViewController.onUpdateFindBar(false); mHomeViewController.onUpdateFindBar(false);
} }
@ -1052,7 +1104,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGeckoClient.onExitFullScreen(); mGeckoClient.onExitFullScreen();
mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(), false); mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(), false);
} }
else { else if(mSearchbar.isFocused() || isKeyboardOpened){
mHomeViewController.onClearSelections(true);
}
else if(!mSearchBarWasBackButtonPressed){
mGeckoClient.onBackPressed(true); mGeckoClient.onBackPressed(true);
} }
} }
@ -1104,7 +1159,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.onSetBannerAdMargin(true,(boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED)); mHomeViewController.onSetBannerAdMargin(true,(boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
} }
if(mGeckoClient.getSession().getCurrentURL().contains("boogle.store") || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED_DARK) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){ if(mGeckoClient.getSession().getCurrentURL().equals("about:blank") || mGeckoClient.getSession().getCurrentURL().contains("boogle.store") || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_URL_CACHED_DARK) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE) || mGeckoClient.getSession().getCurrentURL().startsWith(CONST_GENESIS_HELP_URL_CACHE_DARK)){
mHomeViewController.updateBannerAdvertStatus(false, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED)); mHomeViewController.updateBannerAdvertStatus(false, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
}else { }else {
mHomeViewController.updateBannerAdvertStatus(true, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED)); mHomeViewController.updateBannerAdvertStatus(true, (boolean)pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_IS_ADVERT_LOADED));
@ -1139,6 +1194,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(), false); mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(), false);
pluginController.getInstance().onMessageManagerInvoke(null, M_RESET); pluginController.getInstance().onMessageManagerInvoke(null, M_RESET);
pluginController.getInstance().onNotificationInvoke(Collections.singletonList(1296000000) /* Every 15 Days */ , pluginEnums.eNotificationManager.M_CREATE_NOTIFICATION); pluginController.getInstance().onNotificationInvoke(Collections.singletonList(1296000000) /* Every 15 Days */ , pluginEnums.eNotificationManager.M_CREATE_NOTIFICATION);
mSearchBarWasBackButtonPressed = false;
} }
@Override @Override
@ -1179,6 +1235,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
pluginController.getInstance().onNotificationInvoke(null, pluginEnums.eNotificationManager.M_CLEAR_NOTIFICATION ); pluginController.getInstance().onNotificationInvoke(null, pluginEnums.eNotificationManager.M_CLEAR_NOTIFICATION );
initWidget(); initWidget();
initTabCountForced();
super.onResume(); super.onResume();
} }
@ -1263,7 +1320,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
}else { }else {
onSearchBarInvoked(mSearchbar); mHomeViewController.onClearSelections(true);
} }
} }
/*-------------------------------------------------------External Callback Methods-------------------------------------------------------*/ /*-------------------------------------------------------External Callback Methods-------------------------------------------------------*/
@ -1323,7 +1380,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
session.stop(); session.stop();
session.close(); session.close();
initTabCount(); initTabCountForced();
if(model!=null){ if(model!=null){
if(mTabFragment.getVisibility()!=View.VISIBLE){ if(mTabFragment.getVisibility()!=View.VISIBLE){
@ -1340,12 +1397,12 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
} }
public void initTabCount(){ public void initTabCount(enums.etype pEvent, List<Object> pData){
mHomeViewController.initTab((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null), false); mHomeViewController.initTab((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null), false, pEvent, pData);
} }
public void initTabCountForced(){ public void initTabCountForced(){
mHomeViewController.initTab((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null), true); mHomeViewController.initTab((int)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_TOTAL_TAB, null), true, null, null);
} }
/*-------------------------------------------------------CALLBACKS-------------------------------------------------------*/ /*-------------------------------------------------------CALLBACKS-------------------------------------------------------*/
@ -1398,8 +1455,8 @@ public class homeController extends AppCompatActivity implements ComponentCallba
else if (menuId == R.id.menu9) { else if (menuId == R.id.menu9) {
helperMethod.hideKeyboard(this); helperMethod.hideKeyboard(this);
mGeckoClient.onRedrawPixel(); mGeckoClient.onRedrawPixel();
activityContextManager.getInstance().getTabController().onInit();
mHomeViewController.onShowTabContainer(); mHomeViewController.onShowTabContainer();
activityContextManager.getInstance().getTabController().onInit();
} }
else if (menuId == R.id.menu8) { else if (menuId == R.id.menu8) {
helperMethod.hideKeyboard(this); helperMethod.hideKeyboard(this);
@ -1420,8 +1477,8 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
else if (menuId == R.id.pMenuOpenRecentTab) else if (menuId == R.id.pMenuOpenRecentTab)
{ {
activityContextManager.getInstance().getTabController().onInit();
mHomeViewController.onShowTabContainer(); mHomeViewController.onShowTabContainer();
activityContextManager.getInstance().getTabController().onInit();
// overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out); // overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out);
} }
else if (menuId == R.id.pMenuOpenNewTab) else if (menuId == R.id.pMenuOpenNewTab)
@ -1501,7 +1558,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (menuId == R.id.menu26 || menuId == R.id.menu27) { if (menuId == R.id.menu26 || menuId == R.id.menu27) {
helperMethod.hideKeyboard(this); helperMethod.hideKeyboard(this);
mGeckoClient.toogleUserAgent(); mGeckoClient.toogleUserAgent();
mGeckoClient.onReload(); mGeckoClient.onReload(mGeckoView);
} }
if(menuId == R.id.menu25){ if(menuId == R.id.menu25){
helperMethod.hideKeyboard(this); helperMethod.hideKeyboard(this);
@ -1537,9 +1594,28 @@ public class homeController extends AppCompatActivity implements ComponentCallba
@Override @Override
public Object invokeObserver(List<Object> data, Object e_type) public Object invokeObserver(List<Object> data, Object e_type)
{ {
if(e_type.equals(enums.etype.M_INIT_TAB_COUNT)) if(e_type.equals(enums.etype.M_INIT_TAB_COUNT_FORCED))
{ {
initTabCount(); initTabCountForced();
}
else if(e_type.equals(enums.etype.M_CACHE_UPDATE_TAB)){
new Handler().postDelayed(() ->
{
mTabFragment.setAlpha(0.01f);
mTabFragment.setVisibility(View.VISIBLE);
activityContextManager.getInstance().getTabController().onInit();
mTabFragment.setVisibility(View.GONE);
mHomeViewController.onHideTabContainer();
}, 1000);
}
else if(e_type.equals(enums.etype.M_UPDATE_PIXEL_BACKGROUND)){
onInvokePixelGenerator();
}
else if(e_type.equals(enums.etype.ON_NEW_TAB_ANIMATION)){
postNewTabAnimation((boolean)data.get(0),(boolean)data.get(1));
}
else if(e_type.equals(enums.etype.ON_OPEN_TAB_VIEW)){
onOpenTabViewBoundary(null);
} }
else if(e_type.equals(enums.etype.download_folder)) else if(e_type.equals(enums.etype.download_folder))
{ {
@ -1553,7 +1629,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(),false); mHomeViewController.onUpdateStatusBarTheme(mGeckoClient.getSession().getTheme(),false);
} }
else if(e_type.equals(M_INITIALIZE_TAB_SINGLE)){ else if(e_type.equals(M_INITIALIZE_TAB_SINGLE)){
postNewTabAnimation((boolean)data.get(0),(boolean)data.get(1)); initTabCount(enums.etype.ON_NEW_TAB_ANIMATION,data);
} }
else if(e_type.equals(M_INITIALIZE_TAB_LINK)){ else if(e_type.equals(M_INITIALIZE_TAB_LINK)){
postNewLinkTabAnimation((String)data.get(0),false); postNewLinkTabAnimation((String)data.get(0),false);
@ -1673,6 +1749,47 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} }
} }
public void onClearSettings(){
mHomeViewController.updateBannerAdvertStatus(false, true);
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null);
activityContextManager.getInstance().getTabController().onCloseAllTabs();
onLoadTabFromTabController();
initTabCountForced();
}
public void onClearAllTabs(){
mHomeViewController.updateBannerAdvertStatus(false, true);
}
public void onInvokePixelGenerator(){
if(mTabFragment.getVisibility()==View.VISIBLE){
return;
}
if(mScrollHandler!=null){
mScrollHandler.removeCallbacksAndMessages(null);
}
mScrollHandler = new Handler();
mScrollRunnable = () -> {
try{
mRenderedBitmap = mGeckoView.capturePixels();
}catch (Exception ignored){}
new Handler().postDelayed(() ->
{
if(mTabFragment.getVisibility()!=View.VISIBLE){
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_UPDATE_PIXEL, Arrays.asList(mGeckoClient.getSession().getSessionID(), mRenderedBitmap, null, mGeckoView, true));
}else {
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_UPDATE_PIXEL, Arrays.asList(mGeckoClient.getSession().getSessionID(), mRenderedBitmap, null, mGeckoView, true));
}
}, 150);
};
mScrollHandler.postDelayed(mScrollRunnable, 250);
}
public class geckoViewCallback implements eventObserver.eventListener{ public class geckoViewCallback implements eventObserver.eventListener{
@Override @Override
@ -1801,6 +1918,17 @@ public class homeController extends AppCompatActivity implements ComponentCallba
else if(e_type.equals(enums.etype.M_ON_MAIL)){ else if(e_type.equals(enums.etype.M_ON_MAIL)){
helperMethod.sendCustomMail(homeController.this, (String)data.get(0)); helperMethod.sendCustomMail(homeController.this, (String)data.get(0));
} }
else if(e_type.equals(enums.etype.M_OPEN_SESSION)){
tabRowModel model = (tabRowModel)dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_CURRENT_TAB, null);
if(model!=null){
onLoadTab(model.getSession(),true,true);
onLoadURL(model.getSession().getCurrentURL());
}
}
else if(e_type.equals(enums.etype.M_UPDATE_PIXEL_BACKGROUND)){
onInvokePixelGenerator();
}
return null; return null;
} }
} }

View File

@ -15,7 +15,10 @@ class homeModel
} }
String urlComplete(String pURL, String pSearchEngine){ String urlComplete(String pURL, String pSearchEngine){
if(pURL.equals("about:config")){ if(pURL.equals("about:blank")){
return helperMethod.completeURL("boogle.store");
}
else if(pURL.equals("about:config")){
return pURL; return pURL;
}else { }else {
try try

View File

@ -3,6 +3,7 @@ package com.darkweb.genesissearchengine.appManager.homeManager.homeController;
import android.animation.Animator; import android.animation.Animator;
import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
@ -178,6 +179,7 @@ class homeViewController
updateBannerAdvertStatus(false, false); updateBannerAdvertStatus(false, false);
expandTopBar(); expandTopBar();
mBlockerFullSceen.setVisibility(View.GONE);
} }
public void initTopBarPadding(){ public void initTopBarPadding(){
@ -232,43 +234,31 @@ class homeViewController
} }
public void onShowTabContainer(){ public void onShowTabContainer(){
if(mTabFragment.getAlpha()==0 || mTabFragment.getAlpha()==1){ if(mTabFragment.getAlpha()==0 || mTabFragment.getAlpha()==1){
onUpdateStatusBarTheme(null, false); mTabFragment.animate().cancel();
mTabFragment.setAlpha(0); mTabFragment.setAlpha(0);
mTabFragment.setTranslationY(0);
mTabFragment.setVisibility(View.VISIBLE); mTabFragment.setVisibility(View.VISIBLE);
mTabFragment.setTranslationY(-1 * helperMethod.pxFromDp(15)); mTabFragment.animate().alpha(1).setDuration(250);
mTopBarHider.setVisibility(View.VISIBLE);
mTopBarHider.animate().alpha(1).setDuration(0);
new Handler().postDelayed(() -> onUpdateStatusBarTheme(null, false);
{
mTabFragment.setLayerType(View.LAYER_TYPE_HARDWARE, null);
mTabFragment.animate().withLayer()
.setDuration(250)
.translationY(0)
.alpha(1f)
.withEndAction(
() -> mTabFragment.setLayerType(View.LAYER_TYPE_NONE, null)
).start();
}, 10);
} }
} }
public void onHideTabContainer(){ public void onHideTabContainer(){
if(mTabFragment.getAlpha()==1){ if(mTabFragment.getAlpha()>0 || mTabFragment.getVisibility()!=View.GONE){
new Handler().postDelayed(() -> new Handler().postDelayed(() ->
{ {
mTopBarHider.animate().alpha(0).setDuration(0).setStartDelay(0).withEndAction(() -> mTopBarHider.setVisibility(View.GONE)); mTopBarHider.animate().alpha(0).setDuration(250).setStartDelay(0).withEndAction(() -> mTopBarHider.setVisibility(View.GONE));
mEvent.invokeObserver(null, enums.etype.M_UPDATE_THEME); mEvent.invokeObserver(null, enums.etype.M_UPDATE_THEME);
}, 150); }, 250);
mTabFragment.animate() .setDuration(150).alpha(0f).withEndAction(() -> mTabFragment.setVisibility(View.GONE)); mTabFragment.animate().setDuration(150).setStartDelay(150).alpha(0f).withEndAction(() -> {
mEvent.invokeObserver(Collections.singletonList(status.sSettingSearchStatus), enums.etype.M_INIT_TAB_COUNT); mTabFragment.setVisibility(View.GONE);
mEvent.invokeObserver(null, enums.etype.M_UPDATE_PIXEL_BACKGROUND);
});
} }
} }
@ -357,6 +347,18 @@ class homeViewController
final Handler handler = new Handler(); final Handler handler = new Handler();
handler.postDelayed(() -> handler.postDelayed(() ->
{ {
Drawable drawable;
Resources res = mContext.getResources();
try {
if(status.sSettingEnableVoiceInput){
drawable = Drawable.createFromXml(res, res.getXml(R.xml.ic_baseline_keyboard_voice));
}else {
drawable = Drawable.createFromXml(res, res.getXml(R.xml.ic_baseline_cancel));
}
mVoiceInput.setImageDrawable(drawable);
} catch (Exception ex) {
ex.printStackTrace();
}
mVoiceInput.setVisibility(View.VISIBLE); mVoiceInput.setVisibility(View.VISIBLE);
}, 0); }, 0);
@ -381,25 +383,35 @@ class homeViewController
} }
} }
void initTab(int count, boolean pForced){ void initTab(int count, boolean pForced, enums.etype pEvent, List<Object> pData){
if(!pForced){ if(!pForced){
mNewTab.animate().cancel(); ObjectAnimator scaleDown = ObjectAnimator.ofPropertyValuesHolder(mNewTab,
mNewTab.animate().withLayer() PropertyValuesHolder.ofFloat("scaleX", 1, 0.70f, 1),
.rotationX(60) PropertyValuesHolder.ofFloat("scaleY", 1, 0.70f, 1));
.alpha(0.4f) scaleDown.setDuration(250);
.setDuration(120) scaleDown.start();
.withEndAction(
new Runnable() { scaleDown.addListener(new Animator.AnimatorListener() {
@Override public void run() {
mNewTab.setRotationX(-60); @Override
mNewTab.animate().withLayer() public void onAnimationStart(Animator arg0) {
.rotationX(0) }
.alpha(1)
.setDuration(150) @Override
.start(); public void onAnimationRepeat(Animator arg0) {
} }
}
).start(); @Override
public void onAnimationEnd(Animator arg0) {
if(pEvent!=null){
mEvent.invokeObserver(pData, pEvent);
}
}
@Override
public void onAnimationCancel(Animator arg0) {
}
});
} }
mNewTab.setText((count+strings.GENERIC_EMPTY_STR)); mNewTab.setText((count+strings.GENERIC_EMPTY_STR));
@ -423,7 +435,7 @@ class homeViewController
public void initStatusBarColor(boolean mInstant) { public void initStatusBarColor(boolean mInstant) {
animatedColor oneToTwo = new animatedColor(ContextCompat.getColor(mContext, R.color.landing_ease_blue), ContextCompat.getColor(mContext, R.color.green_dark_v2)); animatedColor oneToTwo = new animatedColor(ContextCompat.getColor(mContext, R.color.landing_ease_blue), ContextCompat.getColor(mContext, R.color.green_dark_v2));
int mDelay = 500; int mDelay = 800;
if(status.mThemeApplying || mInstant){ if(status.mThemeApplying || mInstant){
mDelay = 0; mDelay = 0;
} }
@ -515,12 +527,15 @@ class homeViewController
private void initSplashScreen(){ private void initSplashScreen(){
mIsAnimating = false; mIsAnimating = false;
mSearchbar.setEnabled(false);
helperMethod.hideKeyboard(mContext); helperMethod.hideKeyboard(mContext);
mSearchLock.setTag(R.id.themed,false); mSearchLock.setTag(R.id.themed,false);
mAppBar.setTag(R.id.expandableBar,true); mAppBar.setTag(R.id.expandableBar,true);
mSearchbar.setEnabled(false); if(!status.mThemeApplying){
mSearchbar.setEnabled(false);
}else {
mSearchbar.setEnabled(true);
}
View root = mSearchbar.getRootView(); View root = mSearchbar.getRootView();
root.setBackgroundColor(ContextCompat.getColor(mContext, R.color.c_background_keyboard)); root.setBackgroundColor(ContextCompat.getColor(mContext, R.color.c_background_keyboard));
@ -586,7 +601,7 @@ class homeViewController
triggerPostUI(); triggerPostUI();
mProgressBar.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE);
mSplashScreen.animate().cancel(); mSplashScreen.animate().cancel();
mProgressBarIndeterminate.animate().setDuration(250).alpha(0).withEndAction(() -> mSplashScreen.animate().setDuration(350).setStartDelay(200).alpha(0).withEndAction(() -> { mProgressBarIndeterminate.animate().setStartDelay(300).setDuration(250).alpha(0).withEndAction(() -> mSplashScreen.animate().setDuration(350).setStartDelay(200).alpha(0).withEndAction(() -> {
mProgressBarIndeterminate.setVisibility(View.GONE); mProgressBarIndeterminate.setVisibility(View.GONE);
mSplashScreen.setClickable(false); mSplashScreen.setClickable(false);
mSplashScreen.setFocusable(false); mSplashScreen.setFocusable(false);
@ -598,7 +613,7 @@ class homeViewController
mBlocker.setVisibility(View.GONE); mBlocker.setVisibility(View.GONE);
mGatewaySplash.setVisibility(View.GONE); mGatewaySplash.setVisibility(View.GONE);
mConnectButton.setVisibility(View.GONE); mConnectButton.setVisibility(View.GONE);
mEvent.invokeObserver(null, enums.etype.M_CACHE_UPDATE_TAB);
})); }));
mEvent.invokeObserver(null, enums.etype.M_WELCOME_MESSAGE); mEvent.invokeObserver(null, enums.etype.M_WELCOME_MESSAGE);
mOrbotLogManager.setClickable(false); mOrbotLogManager.setClickable(false);
@ -820,8 +835,10 @@ class homeViewController
{ {
if(total==0){ if(total==0){
mFindCount.setText("0/0"); mFindCount.setText("0/0");
mFindCount.setTextColor(ContextCompat.getColor(mContext, R.color.dark_red_soft));
}else { }else {
mFindCount.setText((total + "/" + index)); mFindCount.setText((total + "/" + index));
mFindCount.setTextColor(ContextCompat.getColor(mContext, R.color.c_text_v6));
} }
} }
@ -835,7 +852,7 @@ class homeViewController
mColor = -1; mColor = -1;
} }
if(!mSearchbar.isFocused() && pTheme!=null && status.sToolbarTheme && mColor!=-1 && helperMethod.getColorDensity(mColor)<0.80){ if(!mSearchbar.isFocused() && pTheme!=null && status.sToolbarTheme && mColor!=-1 && helperMethod.getColorDensity(mColor)<0.80 && status.sTheme != enums.Theme.THEME_DARK){
mTopBar.setBackgroundColor(mColor); mTopBar.setBackgroundColor(mColor);
mSearchbar.setTextColor(helperMethod.invertedGrayColor(mColor)); mSearchbar.setTextColor(helperMethod.invertedGrayColor(mColor));
mSearchbar.setHintTextColor(helperMethod.invertedGrayColor(mColor)); mSearchbar.setHintTextColor(helperMethod.invertedGrayColor(mColor));
@ -891,6 +908,7 @@ class homeViewController
View decorView = mContext.getWindow().getDecorView(); //set status background black View decorView = mContext.getWindow().getDecorView(); //set status background black
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} }
mTopBarHider.setBackgroundColor(mColor);
} }
else{ else{
mSearchLock.setTag(R.id.themed,false); mSearchLock.setTag(R.id.themed,false);
@ -936,6 +954,8 @@ class homeViewController
View decorView = mContext.getWindow().getDecorView(); View decorView = mContext.getWindow().getDecorView();
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} }
mTopBarHider.setBackground(ContextCompat.getDrawable(mContext, R.color.c_background));
} }
} }
} }
@ -947,6 +967,8 @@ class homeViewController
mFindBar.setVisibility(View.VISIBLE); mFindBar.setVisibility(View.VISIBLE);
mFindBar.setAlpha(1); mFindBar.setAlpha(1);
mFindText.requestFocus(); mFindText.requestFocus();
mFindCount.setText("0/0");
mFindCount.setTextColor(ContextCompat.getColor(mContext, R.color.c_text_v6));
final Handler handler = new Handler(); final Handler handler = new Handler();
handler.postDelayed(() -> handler.postDelayed(() ->
{ {

View File

@ -156,8 +156,7 @@ public class settingClearController extends AppCompatActivity {
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(this), M_DATA_CLEARED); pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(this), M_DATA_CLEARED);
if(mHomeInvoked){ if(mHomeInvoked){
activityContextManager.getInstance().getHomeController().initializeGeckoView(true, true); activityContextManager.getInstance().getHomeController().onClearSettings();
activityContextManager.getInstance().getHomeController().onHomeButton(null);
} }
} }
@ -171,7 +170,7 @@ public class settingClearController extends AppCompatActivity {
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_IS_WELCOME_ENABLED,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_IS_WELCOME_ENABLED,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.PROXY_IS_APP_RATED,false)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.PROXY_IS_APP_RATED,false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.VPN_ENABLED,false)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.VPN_ENABLED,false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.BRIDGE_ENABLES,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.BRIDGE_ENABLES,false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FONT_ADJUSTABLE,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FONT_ADJUSTABLE,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_ZOOM,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_ZOOM,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_VOICE_INPUT,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_VOICE_INPUT,true));
@ -183,7 +182,7 @@ public class settingClearController extends AppCompatActivity {
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.SETTING_LANGUAGE_REGION,strings.SETTING_DEFAULT_LANGUAGE_REGION)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.SETTING_LANGUAGE_REGION,strings.SETTING_DEFAULT_LANGUAGE_REGION));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE,constants.CONST_BACKEND_GENESIS_URL)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE,constants.CONST_BACKEND_GENESIS_URL));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_NOTIFICATION_STATUS,0)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_NOTIFICATION_STATUS,1));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_RESTORE_TAB,false)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_RESTORE_TAB,false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING,false)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING,false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES,0)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES,0));
@ -192,8 +191,10 @@ public class settingClearController extends AppCompatActivity {
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_THEME, enums.Theme.THEME_DEFAULT)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_THEME, enums.Theme.THEME_DEFAULT));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_LIST_VIEW,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_LIST_VIEW,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SHOW_TAB_GRID,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_OPEN_URL_IN_NEW_TAB,true)); dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_OPEN_URL_IN_NEW_TAB,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_POPUP,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
} }
/* LOCAL OVERRIDES */ /* LOCAL OVERRIDES */

View File

@ -1,23 +1,30 @@
package com.darkweb.genesissearchengine.appManager.tabManager; package com.darkweb.genesissearchengine.appManager.tabManager;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Handler; import android.graphics.drawable.TransitionDrawable;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation;
import android.widget.Button; import android.widget.Button;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.constraintlayout.widget.ConstraintLayout; import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.darkweb.genesissearchengine.appManager.activityContextManager; import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.constants.enums; import com.darkweb.genesissearchengine.constants.enums;
@ -30,13 +37,13 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_DOMAIN_URL; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_DOMAIN_URL;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE_DARK; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE_DARK;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_URL_CACHED; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_URL_CACHED;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_URL_CACHED_DARK; import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_URL_CACHED_DARK;
import static org.mozilla.gecko.util.ThreadUtils.runOnUiThread;
public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder> public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
{ {
@ -46,15 +53,23 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
private eventObserver.eventListener mEvent; private eventObserver.eventListener mEvent;
private ArrayList<String> mSelectedList = new ArrayList<>(); private ArrayList<String> mSelectedList = new ArrayList<>();
private Boolean mLongPressMenuEnabled = false; private Boolean mLongPressMenuEnabled = false;
private boolean mViewLoaded = false;
private ObjectAnimator mFirstRow = null;
tabAdapter(ArrayList<tabRowModel> pModelList, eventObserver.eventListener event) { tabAdapter(ArrayList<tabRowModel> pModelList, eventObserver.eventListener event) {
initialize(pModelList);
this.mEvent = event;
}
private void initialize(ArrayList<tabRowModel> pModelList){
this.mModelList.clear(); this.mModelList.clear();
this.mModelList.addAll(pModelList); this.mModelList.addAll(pModelList);
mModelList.add(new tabRowModel(null, null,null)); mModelList.add(new tabRowModel(null, null,null));
this.mEvent = event; mViewLoaded = false;
} }
private void reInitData(ArrayList<tabRowModel> pModelList){ private void reInitData(ArrayList<tabRowModel> pModelList){
for(int mCounter=0;mCounter<pModelList.size();mCounter++){ for(int mCounter=0;mCounter<pModelList.size();mCounter++){
mModelList.add(0,pModelList.get(mCounter)); mModelList.add(0,pModelList.get(mCounter));
@ -86,6 +101,74 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
holder.itemView.setTag(position); holder.itemView.setTag(position);
holder.itemView.findViewById(R.id.pRemoveRow).setTag(position); holder.itemView.findViewById(R.id.pRemoveRow).setTag(position);
holder.itemView.findViewById(R.id.pLoadSession).setTag(position); holder.itemView.findViewById(R.id.pLoadSession).setTag(position);
if(position == 0 && status.sTabGridLayoutEnabled && !mViewLoaded){
onExpandScale(holder.itemView);
mViewLoaded = true;
}else if(position != mModelList.size()-1){
holder.itemView.setScaleY(1f);
holder.itemView.setScaleX(1f);
}
}
private boolean mFirstRowAnimating = false;
public void onExpandScale(View v) {
if(mFirstRowAnimating){
return;
}
mFirstRowAnimating = true;
v.bringToFront();
if(mFirstRow!=null){
mFirstRow.end();
mFirstRow.cancel();
}
v.setScaleY(0.85f);
v.setScaleX(0.85f);
mFirstRow = ObjectAnimator.ofPropertyValuesHolder(v,
PropertyValuesHolder.ofFloat("scaleX", 0.85f, 1),
PropertyValuesHolder.ofFloat("scaleY", 0.85f, 1));
mFirstRow.setDuration(200);
mFirstRow.setStartDelay(150);
mFirstRow.start();
mFirstRow.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation, boolean isReverse) {
}
@Override
public void onAnimationEnd(Animator animation, boolean isReverse) {
mFirstRowAnimating = false;
}
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
mFirstRowAnimating = false;
}
@Override
public void onAnimationCancel(Animator animation) {
mFirstRowAnimating = false;
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
public void scaleView(View v) {
v.bringToFront();
ObjectAnimator scaleDown = ObjectAnimator.ofPropertyValuesHolder(v,
PropertyValuesHolder.ofFloat("scaleX", 1, 0.85f),
PropertyValuesHolder.ofFloat("scaleY", 1, 0.85f));
scaleDown.setDuration(200);
scaleDown.start();
} }
@Override @Override
@ -114,8 +197,6 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
} }
} }
} }
mEvent.invokeObserver(null, tabEnums.eTabAdapterCallback.ON_SHOW_UNDO_DIALOG);
} }
} }
@ -141,7 +222,6 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
mEvent.invokeObserver(Collections.singletonList(0), tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW_RETAIN_BACKUP); mEvent.invokeObserver(Collections.singletonList(0), tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW_RETAIN_BACKUP);
} }
mEvent.invokeObserver(null, tabEnums.eTabAdapterCallback.ON_SHOW_UNDO_DIALOG);
} }
private void onClearAllSelection(){ private void onClearAllSelection(){
@ -214,8 +294,8 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
notifyItemRangeChanged(mIndex, mModelList.size()); notifyItemRangeChanged(mIndex, mModelList.size());
} }
mEvent.invokeObserver(Collections.singletonList(mIndex), tabEnums.eTabAdapterCallback.M_CLEAR_BACKUP);
mEvent.invokeObserver(Collections.singletonList(mIndex), tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW); mEvent.invokeObserver(Collections.singletonList(mIndex), tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW);
mEvent.invokeObserver(null, tabEnums.eTabAdapterCallback.ON_SHOW_UNDO_DIALOG);
} }
/*View Holder Extensions*/ /*View Holder Extensions*/
@ -257,8 +337,15 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
mItemSelectionMenu.setVisibility(View.VISIBLE); mItemSelectionMenu.setVisibility(View.VISIBLE);
mItemSelectionMenuButton.setOnClickListener(this); mItemSelectionMenuButton.setOnClickListener(this);
}else { }else {
mLoadSession.setOnLongClickListener(this);
mRemoveRow.setOnClickListener(this);
mLoadSession.setOnClickListener(this);
if(model.getSession().getTheme()==null){ if(model.getSession().getTheme()==null){
mBorder.setBackgroundColor(ContextCompat.getColor(itemView.getContext(), R.color.c_ripple_v2)); if(status.sTabGridLayoutEnabled){
mBorder.setBackgroundColor(ContextCompat.getColor(itemView.getContext(), R.color.c_view_divier_background_inner));
}else {
mBorder.setBackgroundColor(ContextCompat.getColor(itemView.getContext(), R.color.c_ripple));
}
}else { }else {
try{ try{
mBorder.setBackgroundColor(Color.parseColor(model.getSession().getTheme())); mBorder.setBackgroundColor(Color.parseColor(model.getSession().getTheme()));
@ -281,15 +368,30 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
} }
if(status.sTabGridLayoutEnabled){ if(status.sTabGridLayoutEnabled){
mDescription.setText(helperMethod.getDomainName(mURL)); mDescription.setText((model.getSession().getTitle()));
}else { }else {
mDescription.setText(mURL); mDescription.setText(mURL);
} }
mDate.setText(model.getDate()); mDate.setText(model.getDate());
mWebThumbnail.setImageBitmap(model.getBitmap());
if(getLayoutPosition()==0){ if(mURL.equals("about:blank")){
// mEvent.invokeObserver(Arrays.asList(mWebThumbnail, mURL), enums.etype.fetch_thumbnail); mWebThumbnail.setAlpha(0f);
}else {
Thread timer = new Thread()
{
public void run()
{
runOnUiThread(() -> {
if(mWebThumbnail.getDrawable()==null){
mWebThumbnail.setImageBitmap(model.getBitmap());
}else {
Drawable mDrawable = new BitmapDrawable(itemView.getContext().getResources(), model.getBitmap());
helperMethod.setImageDrawableWithAnimation(mWebThumbnail, mDrawable,250);
}
});
}
};
timer.start();
} }
if(mSelectedList.contains(model.getSession().getSessionID())){ if(mSelectedList.contains(model.getSession().getSessionID())){
@ -298,11 +400,7 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
onSelectionClear(mSelectedView); onSelectionClear(mSelectedView);
} }
if(model.getSession().equals(mModelList.get(0).getSession())){ if(!model.getSession().equals(mModelList.get(0).getSession()) && !status.sTabGridLayoutEnabled){
if(!status.sTabGridLayoutEnabled){
itemView.setBackgroundColor(ContextCompat.getColor(activityContextManager.getInstance().getHomeController(), R.color.c_list_item_current));
}
}else {
Drawable mDrawable; Drawable mDrawable;
Resources res = itemView.getContext().getResources(); Resources res = itemView.getContext().getResources();
try { try {
@ -311,9 +409,49 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
} catch (Exception ignored) { } catch (Exception ignored) {
} }
} }
mLoadSession.setOnLongClickListener(this); }
mRemoveRow.setOnClickListener(this);
mLoadSession.setOnClickListener(this); itemView.setBackgroundColor(ContextCompat.getColor(activityContextManager.getInstance().getHomeController(), R.color.clear_alpha));
if(!status.sTabGridLayoutEnabled){
if(getLayoutPosition() == 0){
itemView.setBackgroundColor(ContextCompat.getColor(activityContextManager.getInstance().getHomeController(), R.color.c_list_item_current));
}
}
if(status.sTabGridLayoutEnabled){
CardView mLayout = itemView.findViewById(R.id.pRowContainerInner);
CardView mCardView = itemView.findViewById(R.id.pCardViewParent);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mLayout.getLayoutParams();
if(getLayoutPosition() == 0){
params.leftMargin = helperMethod.pxFromDp(2.5f);
params.rightMargin = helperMethod.pxFromDp(2.5f);
params.topMargin = helperMethod.pxFromDp(2.5f);
params.bottomMargin = helperMethod.pxFromDp(2.5f);
if(status.sTheme == enums.Theme.THEME_DARK || status.sDefaultNightMode){
mCardView.setCardBackgroundColor(ContextCompat.getColor(itemView.getContext(), R.color.c_button_text_v1_inverted));
}else {
mCardView.setCardBackgroundColor(ContextCompat.getColor(itemView.getContext(), R.color.text_color_highlight_v3));
}
}else {
if(status.sTheme == enums.Theme.THEME_DARK || status.sDefaultNightMode){
params.leftMargin = helperMethod.pxFromDp(2.5f);
params.rightMargin = helperMethod.pxFromDp(2.5f);
params.topMargin = helperMethod.pxFromDp(2.5f);
params.bottomMargin = helperMethod.pxFromDp(2.5f);
mCardView.setCardBackgroundColor(ContextCompat.getColor(itemView.getContext(), R.color.c_tab_background));
}else {
params.leftMargin = helperMethod.pxFromDp(0f);
params.rightMargin = helperMethod.pxFromDp(0f);
params.topMargin = helperMethod.pxFromDp(0f);
params.bottomMargin = helperMethod.pxFromDp(0f);
mCardView.setCardBackgroundColor(ContextCompat.getColor(itemView.getContext(), R.color.c_view_divier_background));
}
}
} }
if(this.getLayoutPosition()==mModelList.size()-1){ if(this.getLayoutPosition()==mModelList.size()-1){
@ -327,9 +465,6 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
mItemSelectionMenuButton.animate().setDuration(250).alpha(1); mItemSelectionMenuButton.animate().setDuration(250).alpha(1);
} }
}else { }else {
if(model.getmId()!=null){
mItemSelectionMenuReference.animate().cancel();
}
itemView.setVisibility(View.VISIBLE); itemView.setVisibility(View.VISIBLE);
mLongPressMenuEnabled = false; mLongPressMenuEnabled = false;
mItemSelectionMenuButton.animate().setDuration(250).alpha(1); mItemSelectionMenuButton.animate().setDuration(250).alpha(1);
@ -351,6 +486,9 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
}else { }else {
onTriggerURL(mModelList.get(this.getLayoutPosition())); onTriggerURL(mModelList.get(this.getLayoutPosition()));
if(status.sTabGridLayoutEnabled){
scaleView(itemView);
}
} }
}else { }else {
for(int mCounter=0;mCounter<mSelectedList.size();mCounter++){ for(int mCounter=0;mCounter<mSelectedList.size();mCounter++){
@ -418,6 +556,8 @@ public class tabAdapter extends RecyclerView.Adapter<tabAdapter.listViewHolder>
onRemoveAll(); onRemoveAll();
}else if(pCommands.equals(tabEnums.eTabAdapterCommands.REMOVE_ROW_CROSSED)){ }else if(pCommands.equals(tabEnums.eTabAdapterCommands.REMOVE_ROW_CROSSED)){
onRemoveRowCross((int)pData.get(0)); onRemoveRowCross((int)pData.get(0));
}else if(pCommands.equals(tabEnums.eTabAdapterCommands.M_INITIALIZE)){
initialize((ArrayList<tabRowModel>) pData.get(0));
} }
return null; return null;
} }

View File

@ -1,6 +1,7 @@
package com.darkweb.genesissearchengine.appManager.tabManager; package com.darkweb.genesissearchengine.appManager.tabManager;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.res.Configuration;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
@ -27,6 +28,7 @@ import com.darkweb.genesissearchengine.appManager.homeManager.homeController.hom
import com.darkweb.genesissearchengine.appManager.settingManager.advanceManager.settingAdvanceController; import com.darkweb.genesissearchengine.appManager.settingManager.advanceManager.settingAdvanceController;
import com.darkweb.genesissearchengine.appManager.settingManager.settingHomePage.settingHomeController; import com.darkweb.genesissearchengine.appManager.settingManager.settingHomePage.settingHomeController;
import com.darkweb.genesissearchengine.constants.constants; import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.enums;
import com.darkweb.genesissearchengine.constants.status; import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.dataManager.dataController; import com.darkweb.genesissearchengine.dataManager.dataController;
import com.darkweb.genesissearchengine.dataManager.dataEnums; import com.darkweb.genesissearchengine.dataManager.dataEnums;
@ -62,14 +64,21 @@ public class tabController extends Fragment
private tabAdapter mTabAdapter; private tabAdapter mTabAdapter;
private Handler mScrollHandler = null; private Handler mScrollHandler = null;
private Runnable mScrollRunnable = null; private Runnable mScrollRunnable = null;
int minScroll = 0; private boolean mTabGridLayoutEnabled = status.sTabGridLayoutEnabled;
int maxScroll = 0; private float minScroll = 0;
private float maxScroll = 0;
private float mScreenHeight;
private float getmScreenWidth;
private boolean mClosed = false;
private boolean mClosedByNewTab = false;
/*Initializations*/ /*Initializations*/
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@SuppressLint("InflateParams") View root = inflater.inflate(R.layout.tab_view, null); @SuppressLint("InflateParams") View root = inflater.inflate(R.layout.tab_view, null);
mRootView = root; mRootView = root;
mScreenHeight = helperMethod.pxFromDp(helperMethod.getScreenHeight(activityContextManager.getInstance().getHomeController()));
getmScreenWidth = helperMethod.pxFromDp(helperMethod.getScreenWidth(activityContextManager.getInstance().getHomeController()));
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
return root; return root;
@ -82,11 +91,36 @@ public class tabController extends Fragment
} }
public void onInit(){ public void onInit(){
initializeActivity(); if(mTabAdapter==null || mTabGridLayoutEnabled!=status.sTabGridLayoutEnabled){
initializeViews(); initializeActivity();
initializeLocalEventHandlers(); initializeViews();
initializeList(); initializeLocalEventHandlers();
initSwipe(); initializeList();
initSwipe();
mTabGridLayoutEnabled = status.sTabGridLayoutEnabled;
}else {
initializeList();
}
mClosed = false;
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_RELEASE_BLOCKER, null);
mNestedScrollView.scrollTo(0,0);
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_HIDE_UNDO_DIALOG_INIT, null);
mRecycleView.setAlpha(1);
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_INITIALIZE, Collections.singletonList(mListModel.getList()));
mTabAdapter.notifyDataSetChanged();
}
public void onInitFirstElement(){
if(mTabAdapter!=null){
mHomeController.runOnUiThread(new Runnable() {
@Override
public void run() {
mTabAdapter.notifyItemChanged(0);
}
});
}
} }
public void initializeActivity(){ public void initializeActivity(){
@ -129,10 +163,16 @@ public class tabController extends Fragment
}); });
mNestedScrollView.getViewTreeObserver().addOnScrollChangedListener(() -> { mNestedScrollView.getViewTreeObserver().addOnScrollChangedListener(() -> {
int scrollY = mNestedScrollView.getScrollY(); float scrollY = mNestedScrollView.getScrollY();
minScroll = scrollY; minScroll = scrollY;
maxScroll = mRecycleView.computeVerticalScrollRange() - helperMethod.pxFromDp(500); int orientation = this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
maxScroll = mRecycleView.computeVerticalScrollRange() - mScreenHeight*0.350f;
} else {
maxScroll = mRecycleView.computeVerticalScrollRange() - getmScreenWidth*0.20f;
}
onSwipeBounce(300); onSwipeBounce(300);
}); });
@ -147,18 +187,22 @@ public class tabController extends Fragment
} }
public void onSwipeBounce(int mDuration){ public void onSwipeBounce(int mDuration){
if(minScroll > maxScroll){ if(!mClosed){
if(mScrollHandler!=null){ if(minScroll > maxScroll){
if(mScrollHandler!=null){
mScrollHandler.removeCallbacksAndMessages(null);
}
mScrollHandler = new Handler();
mScrollRunnable = () -> {
mNestedScrollView.clearFocus();
mRecycleView.clearFocus();
mNestedScrollView.smoothScrollTo(0, (int)maxScroll);
};
mScrollHandler.postDelayed(mScrollRunnable, mDuration);
}else if(mScrollHandler!=null){
mScrollHandler.removeCallbacksAndMessages(null); mScrollHandler.removeCallbacksAndMessages(null);
} }
mScrollHandler = new Handler();
mScrollRunnable = () -> {
mNestedScrollView.clearFocus();
mRecycleView.clearFocus();
mNestedScrollView.smoothScrollTo(0, maxScroll);
};
mScrollHandler.postDelayed(mScrollRunnable, mDuration);
} }
} }
@ -217,11 +261,11 @@ public class tabController extends Fragment
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition(); int position = viewHolder.getAdapterPosition();
onExitAndClearBackup();
boolean mStatus = onInitRemoveView(position, true); boolean mStatus = onInitRemoveView(position, true);
if(mStatus){ if(mStatus){
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.NOTIFY_SWIPE, Collections.singletonList(position)); mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.NOTIFY_SWIPE, Collections.singletonList(position));
} }
onShowUndoDialog();
viewHolder.itemView.animate().alpha(0); viewHolder.itemView.animate().alpha(0);
} }
@ -251,7 +295,7 @@ public class tabController extends Fragment
public void onRemoveTab(int pIndex){ public void onRemoveTab(int pIndex){
mListModel.onTrigger(tabEnums.eModelCallback.M_REMOVE_TAB,Collections.singletonList(pIndex)); mListModel.onTrigger(tabEnums.eModelCallback.M_REMOVE_TAB,Collections.singletonList(pIndex));
if(mListModel.getList().size()<1){ if(mListModel.getList().size()<1){
mRecycleView.animate().setDuration(350).alpha(0); mRecycleView.animate().setDuration(200).alpha(0);
} }
initTabCount(400); initTabCount(400);
activityContextManager.getInstance().getHomeController().onLoadTabFromTabController(); activityContextManager.getInstance().getHomeController().onLoadTabFromTabController();
@ -263,14 +307,23 @@ public class tabController extends Fragment
mListModel.onTrigger(tabEnums.eModelCallback.M_REMOVE_TAB,Collections.singletonList(pIndex)); mListModel.onTrigger(tabEnums.eModelCallback.M_REMOVE_TAB,Collections.singletonList(pIndex));
mListModel.getList().remove(pIndex); mListModel.getList().remove(pIndex);
if(mListModel.getList().size()<1){ if(mListModel.getList().size()<1){
mRecycleView.animate().setDuration(350).alpha(0).withEndAction(() -> mTabAdapter.notifyDataSetChanged()); mRecycleView.animate().setDuration(200).alpha(0).withEndAction(() -> {
onShowUndoDialog();
mTabAdapter.notifyDataSetChanged();
});
activityContextManager.getInstance().getHomeController().onLoadTabFromTabController(); activityContextManager.getInstance().getHomeController().onLoadTabFromTabController();
new Handler().postDelayed(() -> onSwipeBounce(0), 400); new Handler().postDelayed(() -> {
onSwipeBounce(0);
}, 400);
return false; return false;
}else{ }else{
onShowUndoDialog();
mTabAdapter.notifyItemRangeChanged(pIndex, mTabAdapter.getItemCount() - pIndex); mTabAdapter.notifyItemRangeChanged(pIndex, mTabAdapter.getItemCount() - pIndex);
mTabAdapter.notifyItemChanged(0);
activityContextManager.getInstance().getHomeController().onLoadTabFromTabController(); activityContextManager.getInstance().getHomeController().onLoadTabFromTabController();
new Handler().postDelayed(() -> onSwipeBounce(0), 400); new Handler().postDelayed(() -> {
onSwipeBounce(0);
}, 400);
return true; return true;
} }
} }
@ -285,11 +338,15 @@ public class tabController extends Fragment
} }
public void onNewTabInvoked(){ public void onNewTabInvoked(){
if(mListModel.getList().size()>=1){ ArrayList<tabRowModel> mBackup = (ArrayList<tabRowModel>)mListModel.onTrigger(tabEnums.eModelCallback.M_GET_BACKUP,null);
if(mListModel.getList().size()>=1 && mBackup.size()!=1){
mHomeController.onNewTabBackground(true,false); mHomeController.onNewTabBackground(true,false);
} }
mClosedByNewTab = false;
onPostExit();
onBackPressed();
onClose(); onClose();
mHomeController.onBackPressed();
} }
public void onRestoreTab(View view){ public void onRestoreTab(View view){
@ -300,18 +357,21 @@ public class tabController extends Fragment
handler.postDelayed(() -> handler.postDelayed(() ->
{ {
mPopupUndo.findViewById(R.id.pBlockerUndo).setVisibility(View.VISIBLE); mPopupUndo.findViewById(R.id.pBlockerUndo).setVisibility(View.VISIBLE);
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_HIDE_UNDO_DIALOG, null);
if(mRecycleView.getAlpha()==0){ if(mRecycleView.getAlpha()==0){
mTabAdapter.notifyDataSetChanged();
initializeList(); initializeList();
mRecycleView.animate().cancel(); mRecycleView.animate().cancel();
mRecycleView.setVisibility(View.VISIBLE); mRecycleView.setVisibility(View.VISIBLE);
mRecycleView.animate().setDuration(350).alpha(1); mRecycleView.animate().setDuration(200).alpha(1).withEndAction(() -> mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_HIDE_UNDO_DIALOG, null));
}else {
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_HIDE_UNDO_DIALOG, null);
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.REINIT_DATA, Collections.singletonList(mBackup));
} }
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.REINIT_DATA, Collections.singletonList(mBackup));
mListModel.onTrigger(tabEnums.eModelCallback.M_CLEAR_BACKUP_RETAIN_DATABASE,null); mListModel.onTrigger(tabEnums.eModelCallback.M_CLEAR_BACKUP_RETAIN_DATABASE,null);
}, 100); }, 100);
activityContextManager.getInstance().getHomeController().onLoadTabFromTabController();
} }
public void onShowUndoDialog(){ public void onShowUndoDialog(){
@ -339,7 +399,7 @@ public class tabController extends Fragment
/*UI Triggers*/ /*UI Triggers*/
public void onPostExit() { public void onPostExit() {
if(mtabViewController!=null){ if(mtabViewController!=null && !mClosedByNewTab){
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_EXIT, null); mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_EXIT, null);
} }
} }
@ -348,12 +408,16 @@ public class tabController extends Fragment
mtabViewController.onTrigger(tabEnums.eTabViewCommands.M_SHOW_MENU, Collections.singletonList(view)); mtabViewController.onTrigger(tabEnums.eTabViewCommands.M_SHOW_MENU, Collections.singletonList(view));
} }
public int getSelectionCount(){
return (int)mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.GET_SELECTION_SIZE,null);
}
public void onRemoveSelection(View view) { public void onRemoveSelection(View view) {
int mSelectionSize = (int)mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.GET_SELECTION_SIZE,null); int mSelectionSize = (int)mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.GET_SELECTION_SIZE,null);
if(mSelectionSize >= mListModel.getList().size()){ if(mSelectionSize >= mListModel.getList().size()){
mRecycleView.animate().setDuration(350).alpha(0).withEndAction(() -> { mRecycleView.animate().setDuration(200).alpha(0).withEndAction(() -> {
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_REMOVE_ALL_SELECTION, null); mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_REMOVE_ALL_SELECTION, null);
onShowUndoDialog(); //onShowUndoDialog();
}); });
}else { }else {
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_REMOVE_ALL_SELECTION, null); mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_REMOVE_ALL_SELECTION, null);
@ -370,7 +434,9 @@ public class tabController extends Fragment
public void onClearSelection(View view) { public void onClearSelection(View view) {
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_CLEAR_ALL_SELECTION, null); mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_CLEAR_ALL_SELECTION, null);
mNestedScrollView.smoothScrollTo(0,0); if(!mClosed){
mNestedScrollView.smoothScrollTo(0,0);
}
} }
public void onTriggerSelected(View view){ public void onTriggerSelected(View view){
@ -384,18 +450,35 @@ public class tabController extends Fragment
/*Tab Menu*/ /*Tab Menu*/
public void onCloseAllTabs(){
if(mTabAdapter!=null){
mTabAdapter.notifyDataSetChanged();
}
}
public void onMenuTrigger(View pView){ public void onMenuTrigger(View pView){
if(pView.getId() == R.id.pNewTab){ if(pView.getId() == R.id.pNewTab){
onNewTabInvoked(); new Handler().postDelayed(this::onNewTabInvoked, 350);
mClosedByNewTab = true;
mHomeController.onBackPressed();
}
if(pView.getId() == R.id.pNewTabMenu){
new Handler().postDelayed(this::onNewTabInvoked, 350);
mClosedByNewTab = true;
mHomeController.onBackPressed();
} }
else if(pView.getId() == R.id.pCloseTab){ else if(pView.getId() == R.id.pCloseTab){
mRecycleView.animate().setDuration(350).alpha(0).withEndAction(() -> { mRecycleView.animate().setDuration(200).alpha(0).withEndAction(() -> {
onClearTabBackup(); onClearTabBackup();
mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.REMOVE_ALL, null); mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.REMOVE_ALL, null);
}); });
} }
else if(pView.getId() == R.id.pOpenSetting){ else if(pView.getId() == R.id.pOpenSetting){
helperMethod.openActivity(settingAdvanceController.class, constants.CONST_LIST_HISTORY, activityContextManager.getInstance().getHomeController(),true); activityContextManager.getInstance().getHomeController().onBackPressed();
new Handler().postDelayed(() ->
{
helperMethod.openActivity(settingAdvanceController.class, constants.CONST_LIST_HISTORY, activityContextManager.getInstance().getHomeController(),true);
}, 300);
} }
mtabViewController.onTrigger(tabEnums.eTabViewCommands.M_DISMISS_MENU, null); mtabViewController.onTrigger(tabEnums.eTabViewCommands.M_DISMISS_MENU, null);
} }
@ -421,7 +504,7 @@ public class tabController extends Fragment
public void onBackPressed() { public void onBackPressed() {
if(mTabAdapter!=null){ if(mTabAdapter!=null && !mClosedByNewTab){
boolean mStatus = (boolean) mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_SELECTION_MENU_SHOWING, null); boolean mStatus = (boolean) mTabAdapter.onTrigger(tabEnums.eTabAdapterCommands.M_SELECTION_MENU_SHOWING, null);
onClearTabBackup(); onClearTabBackup();
onClearSelection(null); onClearSelection(null);
@ -457,6 +540,8 @@ public class tabController extends Fragment
onBackPressed(); onBackPressed();
} }
else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_LOAD_TAB)){ else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_LOAD_TAB)){
mClosed = true;
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_HOLD_BLOCKER, null);
mHomeController.onLoadTab((geckoSession)data.get(0),(boolean)data.get(1),true); mHomeController.onLoadTab((geckoSession)data.get(0),(boolean)data.get(1),true);
} }
else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW)){ else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW)){
@ -466,13 +551,12 @@ public class tabController extends Fragment
else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW_RETAIN_BACKUP)){ else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_REMOVE_TAB_VIEW_RETAIN_BACKUP)){
onInitRemoveView((Integer) data.get(0), false); onInitRemoveView((Integer) data.get(0), false);
} }
else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_SHOW_UNDO_DIALOG)){ else if(e_type.equals(tabEnums.eTabAdapterCallback.M_CLEAR_BACKUP)){
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_SHOW_UNDO_DIALOG, Collections.singletonList(mListModel.getList().size())); onExitAndClearBackup();
} }
else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_SHOW_SELECTION_MENU)){ else if(e_type.equals(tabEnums.eTabAdapterCallback.ON_SHOW_SELECTION_MENU)){
mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_SHOW_SELECTION_MENU, data); mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_SHOW_SELECTION_MENU, data);
} }
return null; return null;
} }
} }

View File

@ -4,15 +4,15 @@ public class tabEnums
{ {
/*Settings Manager*/ /*Settings Manager*/
public enum eTabViewCommands { public enum eTabViewCommands {
M_DISMISS_MENU, M_SHOW_MENU, INIT_TAB_COUNT, ON_HIDE_SELECTION, ON_SHOW_SELECTION, ON_SHOW_SELECTION_MENU, ON_SHOW_UNDO_DIALOG, ON_HIDE_UNDO_DIALOG, ON_GENERATE_SWIPABLE_BACKGROUND, ON_EXIT M_DISMISS_MENU, M_SHOW_MENU, INIT_TAB_COUNT, ON_HIDE_SELECTION, ON_SHOW_SELECTION, ON_SHOW_SELECTION_MENU, ON_SHOW_UNDO_DIALOG, ON_HIDE_UNDO_DIALOG, ON_GENERATE_SWIPABLE_BACKGROUND, ON_EXIT, ON_HIDE_UNDO_DIALOG_INIT, ON_HOLD_BLOCKER, ON_RELEASE_BLOCKER
} }
public enum eTabAdapterCommands { public enum eTabAdapterCommands {
M_SELECTION_MENU_SHOWING, M_REMOVE_ALL_SELECTION, M_CLEAR_ALL_SELECTION, ENABLE_LONG_CLICK_MENU, INIT_FIRST_ROW, REINIT_DATA, NOTIFY_SWIPE, GET_SELECTION_SIZE, REMOVE_ALL, REMOVE_ROW_CROSSED M_SELECTION_MENU_SHOWING, M_REMOVE_ALL_SELECTION, M_CLEAR_ALL_SELECTION, ENABLE_LONG_CLICK_MENU, INIT_FIRST_ROW, REINIT_DATA, NOTIFY_SWIPE, GET_SELECTION_SIZE, REMOVE_ALL, REMOVE_ROW_CROSSED, M_INITIALIZE
} }
public enum eTabAdapterCallback { public enum eTabAdapterCallback {
ON_HIDE_SELECTION, ON_SHOW_SELECTION, ON_CLEAR_TAB_BACKUP, ON_REMOVE_TAB, ON_INIT_TAB_COUNT, ON_BACK_PRESSED, ON_LOAD_TAB, ON_REMOVE_TAB_VIEW,ON_REMOVE_TAB_VIEW_RETAIN_BACKUP, ON_SHOW_UNDO_DIALOG, ON_SHOW_SELECTION_MENU ON_HIDE_SELECTION, ON_SHOW_SELECTION, ON_CLEAR_TAB_BACKUP, ON_REMOVE_TAB, ON_INIT_TAB_COUNT, ON_BACK_PRESSED, ON_LOAD_TAB, ON_REMOVE_TAB_VIEW,ON_REMOVE_TAB_VIEW_RETAIN_BACKUP, M_CLEAR_BACKUP, ON_SHOW_SELECTION_MENU
} }
public enum eModelCallback { public enum eModelCallback {

View File

@ -180,13 +180,20 @@ class tabViewController
mUndoLayout.setVisibility(View.VISIBLE); mUndoLayout.setVisibility(View.VISIBLE);
mUndoLayout.animate().cancel(); mUndoLayout.animate().cancel();
mUndoLayout.setTranslationY(60);
int mDuration = 220;
if(mUndoLayout.getAlpha()>0){
mUndoLayout.setTranslationY(360);
mDuration = 400;
}else {
mUndoLayout.setTranslationY(60);
}
mUndoLayout.setAlpha(0); mUndoLayout.setAlpha(0);
mUndoLayout.animate().withLayer() mUndoLayout.animate().withLayer()
.translationY(0) .translationY(0)
.alpha(1f) .alpha(1f)
.setDuration(220).start(); .setDuration(mDuration).start();
initTabCount(pTabCount); initTabCount(pTabCount);
@ -208,6 +215,13 @@ class tabViewController
mUndoLayout.setVisibility(View.GONE); mUndoLayout.setVisibility(View.GONE);
} }
public void blockUI(boolean pStatus){
if(pStatus){
mBlocker.setVisibility(View.VISIBLE);
}else {
mBlocker.setVisibility(View.GONE);
}
}
private void onDrawSwipableBackground(Canvas pCanvas, RecyclerView.ViewHolder pViewHolder, float pDX, int pActionState) { private void onDrawSwipableBackground(Canvas pCanvas, RecyclerView.ViewHolder pViewHolder, float pDX, int pActionState) {
@ -271,6 +285,15 @@ class tabViewController
}else if(pCommands.equals(tabEnums.eTabViewCommands.ON_EXIT)){ }else if(pCommands.equals(tabEnums.eTabViewCommands.ON_EXIT)){
initExitUI(); initExitUI();
} }
else if(pCommands.equals(tabEnums.eTabViewCommands.ON_HIDE_UNDO_DIALOG_INIT)){
onHideUndoDialogInit();
}
else if(pCommands.equals(tabEnums.eTabViewCommands.ON_HOLD_BLOCKER)){
blockUI(true);
}
else if(pCommands.equals(tabEnums.eTabViewCommands.ON_RELEASE_BLOCKER)){
blockUI(false);
}
return null; return null;
} }
} }

View File

@ -4,9 +4,9 @@ public class enums
{ {
/*Settings Manager*/ /*Settings Manager*/
public enum etype{ public enum etype{
on_update_favicon,ON_UPDATE_TAB_TITLE, ON_LOAD_REQUEST,GECKO_SCROLL_CHANGED,ON_UPDATE_SEARCH_BAR,M_ON_MAIL, on_update_favicon,ON_UPDATE_TAB_TITLE, ON_OPEN_TAB_VIEW,ON_NEW_TAB_ANIMATION, ON_LOAD_REQUEST,GECKO_SCROLL_CHANGED,GECKO_SCROLL_FINISHED,ON_UPDATE_SEARCH_BAR,M_ON_MAIL,SESSION_ID,M_UPDATE_PIXEL_BACKGROUND,M_CACHE_UPDATE_TAB,
on_verify_selected_url_menu,FINDER_RESULT_CALLBACK,M_ADMOB_BANNER_RECHECK, on_verify_selected_url_menu,FINDER_RESULT_CALLBACK,M_ADMOB_BANNER_RECHECK,M_OPEN_SESSION,
welcome, reload,download_folder, M_UPDATE_THEME,M_ON_BANNER_UPDATE, M_LOAD_HOMEPAGE_GENESIS,M_INIT_TAB_COUNT, welcome, reload,download_folder, M_UPDATE_THEME,M_ON_BANNER_UPDATE, M_LOAD_HOMEPAGE_GENESIS,M_INIT_TAB_COUNT,M_INIT_TAB_COUNT_FORCED,
url_triggered, url_triggered_new_tab,url_clear,fetch_favicon, fetch_thumbnail,url_clear_at,remove_from_database,is_empty,M_HOME_PAGE,M_PRELOAD_URL,ON_KEYBOARD_CLOSE,M_CLOSE_TAB, url_triggered, url_triggered_new_tab,url_clear,fetch_favicon, fetch_thumbnail,url_clear_at,remove_from_database,is_empty,M_HOME_PAGE,M_PRELOAD_URL,ON_KEYBOARD_CLOSE,M_CLOSE_TAB,
on_close_sesson,on_long_press, on_full_screen,on_handle_external_intent,on_update_suggestion_url,progress_update,progress_update_forced, ON_EXPAND_TOP_BAR,recheck_orbot,on_url_load,on_playstore_load,back_list_empty,start_proxy, ON_UPDATE_THEME, M_INITIALIZE_TAB_SINGLE, M_INITIALIZE_TAB_LINK,on_request_completed, on_update_history,on_update_suggestion,M_WELCOME_MESSAGE,ON_UPDATE_TITLE_BAR,ON_FIRST_PAINT, ON_LOAD_TAB_ON_RESUME, ON_SESSION_REINIT,on_page_loaded,on_load_error,download_file_popup,on_init_ads,search_update, open_new_tab on_close_sesson,on_long_press, on_full_screen,on_handle_external_intent,on_update_suggestion_url,progress_update,progress_update_forced, ON_EXPAND_TOP_BAR,recheck_orbot,on_url_load,on_playstore_load,back_list_empty,start_proxy, ON_UPDATE_THEME, M_INITIALIZE_TAB_SINGLE, M_INITIALIZE_TAB_LINK,on_request_completed, on_update_history,on_update_suggestion,M_WELCOME_MESSAGE,ON_UPDATE_TITLE_BAR,ON_FIRST_PAINT, ON_LOAD_TAB_ON_RESUME, ON_SESSION_REINIT,on_page_loaded,on_load_error,download_file_popup,on_init_ads,search_update, open_new_tab
} }

View File

@ -61,6 +61,7 @@ public class keys
/*Bridge Settings*/ /*Bridge Settings*/
public static final String BRIDGE_CUSTOM_BRIDGE_1 = "CLEAR_PREFS"; public static final String BRIDGE_CUSTOM_BRIDGE_1 = "CLEAR_PREFS";
public static final String BRIDGE_CUSTOM_TYPE = "BRIDGE_CUSTOM_TYPE";
public static final String BRIDGE_NOTIFICATION = "BRIDGE_NOTIFICATION"; public static final String BRIDGE_NOTIFICATION = "BRIDGE_NOTIFICATION";
public static final String BRIDGE_ENABLES = "pref_bridges_enabled"; public static final String BRIDGE_ENABLES = "pref_bridges_enabled";
public static final String VPN_ENABLED = "pref_vpn"; public static final String VPN_ENABLED = "pref_vpn";

View File

@ -25,6 +25,7 @@ public class status
public static String sSettingLanguageRegion = "Us"; public static String sSettingLanguageRegion = "Us";
public static String mReferenceWebsites; public static String mReferenceWebsites;
public static String sBridgeCustomBridge = strings.GENERIC_EMPTY_STR; public static String sBridgeCustomBridge = strings.GENERIC_EMPTY_STR;
public static String sBridgeCustomType = strings.GENERIC_EMPTY_STR;
public static boolean sSettingEnableZoom = true; public static boolean sSettingEnableZoom = true;
public static boolean sSettingEnableVoiceInput = true; public static boolean sSettingEnableVoiceInput = true;
@ -92,7 +93,8 @@ public class status
status.sSettingLanguageRegion = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_LANGUAGE_REGION,strings.SETTING_DEFAULT_LANGUAGE_REGION)); status.sSettingLanguageRegion = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_LANGUAGE_REGION,strings.SETTING_DEFAULT_LANGUAGE_REGION));
status.sSettingSearchStatus = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE,constants.CONST_BACKEND_GENESIS_URL)); status.sSettingSearchStatus = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE,constants.CONST_BACKEND_GENESIS_URL));
status.sBridgeCustomBridge = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4)); status.sBridgeCustomBridge = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
status.sBridgeNotificationManual = (int)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_NOTIFICATION_STATUS,0)); status.sBridgeCustomType = (String)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,strings.GENERIC_EMPTY_SPACE));
status.sBridgeNotificationManual = (int)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_NOTIFICATION_STATUS,1));
status.sRestoreTabs = (boolean)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_RESTORE_TAB,false)); status.sRestoreTabs = (boolean)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_RESTORE_TAB,false));
status.sCharacterEncoding = (boolean)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING,false)); status.sCharacterEncoding = (boolean)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING,false));
status.sShowImages = (int)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES,0)); status.sShowImages = (int)dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES,0));

View File

@ -58,7 +58,7 @@ public class dataController
} }
if(status.sRestoreTabs || mThemeApplying){ if(status.sRestoreTabs || mThemeApplying){
mTabModel.initializeTab(databaseController.getInstance().selectTabs()); mTabModel.initializeTab(databaseController.getInstance().selectTabs());
activityContextManager.getInstance().getHomeController().initTabCount(); activityContextManager.getInstance().getHomeController().initTabCountForced();
}else{ }else{
invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null); invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null);
} }
@ -102,7 +102,7 @@ public class dataController
return mBookmarkDataModel.onTrigger(pCommands, pData); return mBookmarkDataModel.onTrigger(pCommands, pData);
} }
public Object invokeTab(dataEnums.eTabCommands pCommands, List<Object> pData){ public Object invokeTab(dataEnums.eTabCommands pCommands, List<Object> pData){
return mTabModel.onTrigger(pCommands, pData); return mTabModel.onTrigger(pCommands, pData);
} }

View File

@ -11,6 +11,7 @@ import android.view.textservice.TextServicesManager;
import com.darkweb.genesissearchengine.appManager.bookmarkManager.bookmarkRowModel; import com.darkweb.genesissearchengine.appManager.bookmarkManager.bookmarkRowModel;
import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel; import com.darkweb.genesissearchengine.appManager.historyManager.historyRowModel;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.status; import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.constants.strings; import com.darkweb.genesissearchengine.constants.strings;
import java.util.ArrayList; import java.util.ArrayList;
@ -135,8 +136,14 @@ public class suggestionDataModel implements SpellCheckerSession.SpellCheckerSess
} }
if(pQuery.length()>0){ if(pQuery.length()>0){
mCurrentList.add( 0,new historyRowModel(pQuery, strings.GENERIC_EMPTY_STR,-1)); if(!pQuery.equals("about:blank")){
mCurrentList.add( 0,new historyRowModel(pQuery, strings.GENERIC_EMPTY_STR,-1));
}
} }
if(mCurrentList.size()<=0) {
mCurrentList.add( 0,new historyRowModel("Genesis Search", "genesis.onion",-1));
}
return mCurrentList; return mCurrentList;
} }

View File

@ -15,6 +15,7 @@ import com.darkweb.genesissearchengine.appManager.homeManager.geckoManager.Neste
import com.darkweb.genesissearchengine.appManager.homeManager.geckoManager.geckoSession; import com.darkweb.genesissearchengine.appManager.homeManager.geckoManager.geckoSession;
import com.darkweb.genesissearchengine.appManager.tabManager.tabRowModel; import com.darkweb.genesissearchengine.appManager.tabManager.tabRowModel;
import com.darkweb.genesissearchengine.constants.enums; import com.darkweb.genesissearchengine.constants.enums;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.constants.strings; import com.darkweb.genesissearchengine.constants.strings;
import org.mozilla.geckoview.GeckoResult; import org.mozilla.geckoview.GeckoResult;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -163,7 +164,7 @@ class tabDataModel
} }
tabRowModel getRecentTab(){ tabRowModel getRecentTab(){
if(mTabs.size()>0){ if(mTabs.size()>1){
return mTabs.get(1); return mTabs.get(1);
} }
else { else {
@ -221,22 +222,31 @@ class tabDataModel
int finalCounter = counter; int finalCounter = counter;
if (mTabs.get(counter).getSession().getSessionID().equals(pSessionID)) { if (mTabs.get(counter).getSession().getSessionID().equals(pSessionID)) {
GeckoResult<Bitmap> mResult = pBitmapManager.withHandler(handler); GeckoResult<Bitmap> mResult = pBitmapManager.withHandler(handler);
Bitmap mBitmap = pBitmapManager.poll(4000); Bitmap mBitmap = pBitmapManager.poll(0);
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 20, out); mBitmap.compress(Bitmap.CompressFormat.PNG, 20, out);
Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray())); Bitmap decoded = BitmapFactory.decodeStream(new ByteArrayInputStream(out.toByteArray()));
mTabs.get(finalCounter).setmBitmap(decoded);
if(pImageView!=null){ Bitmap emptyBitmap = Bitmap.createBitmap(decoded.getWidth(), decoded.getHeight(), decoded.getConfig());
activityContextManager.getInstance().getHomeController().runOnUiThread(() -> pImageView.setImageBitmap(mBitmap)); if (!decoded.sameAs(emptyBitmap)) {
mTabs.get(finalCounter).setmBitmap(decoded);
if(pImageView!=null){
activityContextManager.getInstance().getHomeController().runOnUiThread(() -> {
pImageView.setImageBitmap(mBitmap);
});
}
byte[] mThumbnail = out.toByteArray();
if(status.sRestoreTabs){
ContentValues mContentValues = new ContentValues();
mContentValues.put("mThumbnail", mThumbnail);
databaseController.getInstance().execTab("tab",mContentValues, mTabs.get(finalCounter).getmId());
}
} }
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] mThumbnail = bos.toByteArray();
ContentValues mContentValues = new ContentValues();
mContentValues.put("mThumbnail", mThumbnail);
databaseController.getInstance().execTab("tab",mContentValues, mTabs.get(finalCounter).getmId());
} }
} }
@ -244,7 +254,7 @@ class tabDataModel
throwable.printStackTrace(); throwable.printStackTrace();
} }
if(pOpenTabView){ if(pOpenTabView){
activityContextManager.getInstance().getHomeController().onOpenTabReady(); activityContextManager.getInstance().getHomeController().onLoadFirstElement();
} }
} }
@ -287,15 +297,21 @@ class tabDataModel
} }
else if(pCommands == dataEnums.eTabCommands.CLOSE_TAB){ else if(pCommands == dataEnums.eTabCommands.CLOSE_TAB){
closeTab((geckoSession)pData.get(0), pData.get(1)); closeTab((geckoSession)pData.get(0), pData.get(1));
activityContextManager.getInstance().getHomeController().initTabCountForced();
} }
else if(pCommands == dataEnums.eTabCommands.M_CLEAR_TAB){ else if(pCommands == dataEnums.eTabCommands.M_CLEAR_TAB){
clearTab(); clearTab();
activityContextManager.getInstance().getHomeController().initTabCountForced();
} }
else if(pCommands == dataEnums.eTabCommands.M_ADD_TAB){ else if(pCommands == dataEnums.eTabCommands.M_ADD_TAB){
return addTabs((geckoSession)pData.get(0), (boolean)pData.get(1)); int mTabs = addTabs((geckoSession)pData.get(0), (boolean)pData.get(1));
activityContextManager.getInstance().getHomeController().initTabCountForced();
return mTabs;
} }
else if(pCommands == dataEnums.eTabCommands.M_UPDATE_TAB){ else if(pCommands == dataEnums.eTabCommands.M_UPDATE_TAB){
updateTab((String) pData.get(1), (geckoSession) pData.get(5)); updateTab((String) pData.get(1), (geckoSession) pData.get(5));
activityContextManager.getInstance().getHomeController().initTabCountForced();
} }
else if(pCommands == dataEnums.eTabCommands.GET_TAB){ else if(pCommands == dataEnums.eTabCommands.GET_TAB){
return getTab(); return getTab();

View File

@ -13,10 +13,14 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.Point; import android.graphics.Point;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.net.Uri; import android.net.Uri;
import android.os.Vibrator; import android.os.Vibrator;
import android.text.SpannableString; import android.text.SpannableString;
@ -29,10 +33,12 @@ import android.view.View;
import android.view.ViewAnimationUtils; import android.view.ViewAnimationUtils;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation; import android.view.animation.RotateAnimation;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import android.widget.ActionMenuView; import android.widget.ActionMenuView;
import android.widget.ImageView;
import android.widget.PopupWindow; import android.widget.PopupWindow;
import android.widget.Toast; import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
@ -217,10 +223,10 @@ public class helperMethod
final Intent emailIntent = new Intent(Intent.ACTION_SEND); final Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mail}); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mail});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "get bridges"); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "get transport obfs4");
emailIntent.putExtra(Intent.EXTRA_TEXT, "get bridges"); emailIntent.putExtra(Intent.EXTRA_TEXT, "get transport obfs4");
emailIntent.setSelector( selectorIntent ); emailIntent.setSelector( selectorIntent );
context.startActivity(Intent.createChooser(emailIntent, "get transport")); context.startActivity(Intent.createChooser(emailIntent, "get transport obfs4"));
} }
public static void sendBridgeEmail(Context context){ public static void sendBridgeEmail(Context context){
@ -229,10 +235,10 @@ public class helperMethod
final Intent emailIntent = new Intent(Intent.ACTION_SEND); final Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"bridges@torproject.org"}); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"bridges@torproject.org"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "get bridges"); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "get transport obfs4");
emailIntent.putExtra(Intent.EXTRA_TEXT, "get bridges"); emailIntent.putExtra(Intent.EXTRA_TEXT, "get transport obfs4");
emailIntent.setSelector( selectorIntent ); emailIntent.setSelector( selectorIntent );
context.startActivity(Intent.createChooser(emailIntent, "get transport")); context.startActivity(Intent.createChooser(emailIntent, "get transport obfs4"));
} }
public static void onRevealView(View pView) { public static void onRevealView(View pView) {
@ -258,6 +264,31 @@ public class helperMethod
anim.start(); anim.start();
} }
public static Bitmap drawableToBitmap (Drawable drawable) {
Bitmap bitmap = null;
if(drawable==null){
return null;
}
if (drawable instanceof BitmapDrawable) {
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
if(bitmapDrawable.getBitmap() != null) {
return bitmapDrawable.getBitmap();
}
}
if(drawable.getIntrinsicWidth() <= 0 || drawable.getIntrinsicHeight() <= 0) {
bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); // Single color bitmap will be created of 1x1 pixel
} else {
bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
}
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
public static void hideKeyboard(AppCompatActivity context) { public static void hideKeyboard(AppCompatActivity context) {
View view = context.findViewById(android.R.id.content); View view = context.findViewById(android.R.id.content);
if (view != null) if (view != null)
@ -543,10 +574,25 @@ public class helperMethod
return (int)(px / context.getResources().getDisplayMetrics().density); return (int)(px / context.getResources().getDisplayMetrics().density);
} }
public static int pxFromDp(int dp){ public static int pxFromDp(float dp){
return (int) (dp * Resources.getSystem().getDisplayMetrics().density); return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
} }
public static void setImageDrawableWithAnimation(ImageView imageView, Drawable drawable, int duration) {
Drawable currentDrawable = imageView.getDrawable();
if (currentDrawable == null) {
imageView.setImageDrawable(drawable);
return;
}
TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[] {
currentDrawable,
drawable
});
imageView.setImageDrawable(transitionDrawable);
transitionDrawable.startTransition(duration);
}
public static String getMimeType(String url) { public static String getMimeType(String url) {
String type = null; String type = null;
String extension = MimeTypeMap.getFileExtensionFromUrl(url); String extension = MimeTypeMap.getFileExtensionFromUrl(url);

View File

@ -282,7 +282,9 @@ class messageManager
mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING); mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
if(!status.sBridgeCustomBridge.equals("meek") && !status.sBridgeCustomBridge.equals("obfs4")){ if(!status.sBridgeCustomBridge.equals("meek") && !status.sBridgeCustomBridge.equals("obfs4")){
((EditText)mDialog.findViewById(R.id.pBridgeInput)).setText(status.sBridgeCustomBridge); ((EditText)mDialog.findViewById(R.id.pBridgeInput)).setText(status.sBridgeCustomBridge);
((EditText)mDialog.findViewById(R.id.pBridgeType)).setText(status.sBridgeCustomType);
} }
mDialog.setOnShowListener(dialog -> mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING)); mDialog.setOnShowListener(dialog -> mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING));
mDialog.setOnDismissListener(dialog -> { mDialog.setOnDismissListener(dialog -> {
final Handler handler = new Handler(); final Handler handler = new Handler();
@ -310,7 +312,7 @@ class messageManager
mDialog.dismiss(); mDialog.dismiss();
mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
helperMethod.hideKeyboard(mContext); helperMethod.hideKeyboard(mContext);
mEvent.invokeObserver(Collections.singletonList(((EditText)mDialog.findViewById(R.id.pBridgeInput)).getText().toString()), M_SET_BRIDGES); mEvent.invokeObserver(Arrays.asList(((EditText)mDialog.findViewById(R.id.pBridgeInput)).getText().toString(), ((EditText)mDialog.findViewById(R.id.pBridgeType)).getText().toString()), M_SET_BRIDGES);
}); });
} }

View File

@ -39,6 +39,7 @@ class orbotManager
private void onStartOrbot(){ private void onStartOrbot(){
orbotLocalConstants.mBridges = status.sBridgeCustomBridge; orbotLocalConstants.mBridges = status.sBridgeCustomBridge;
orbotLocalConstants.mIsManualBridge = status.sBridgeGatewayManual; orbotLocalConstants.mIsManualBridge = status.sBridgeGatewayManual;
orbotLocalConstants.mManualBridgeType = status.sBridgeCustomType;
Prefs.putBridgesEnabled(status.sBridgeStatus); Prefs.putBridgesEnabled(status.sBridgeStatus);
Intent mServiceIntent = new Intent(mAppContext.getApplicationContext(), OrbotService.class); Intent mServiceIntent = new Intent(mAppContext.getApplicationContext(), OrbotService.class);
mServiceIntent.setAction(ACTION_START); mServiceIntent.setAction(ACTION_START);
@ -49,6 +50,7 @@ class orbotManager
{ {
mAppContext.startService(mServiceIntent); mAppContext.startService(mServiceIntent);
} }
initializeProxy(); initializeProxy();
} }

View File

@ -250,7 +250,7 @@ public class pluginController
pluginController.getInstance().onMessageManagerInvoke(Arrays.asList(constants.CONST_BACKEND_GOOGLE_URL, this), M_BRIDGE_MAIL); pluginController.getInstance().onMessageManagerInvoke(Arrays.asList(constants.CONST_BACKEND_GOOGLE_URL, this), M_BRIDGE_MAIL);
} }
else if(pEventType.equals(M_SET_BRIDGES)){ else if(pEventType.equals(M_SET_BRIDGES)){
activityContextManager.getInstance().getBridgeController().onUpdateBridges((String) pData.get(0)); activityContextManager.getInstance().getBridgeController().onUpdateBridges((String) pData.get(0), (String) pData.get(1));
} }
return null; return null;
} }

View File

@ -31,6 +31,18 @@
<shape <shape
android:shape="rectangle" android:padding="15dp" > android:shape="rectangle" android:padding="15dp" >
<!-- you can use any color you want I used here gray color--> <!-- you can use any color you want I used here gray color-->
<solid android:color="@color/c_background"/>
<corners android:radius="4dp"/>
<stroke
android:width="2.5dp"
android:color="@color/c_text_v5" />
<corners android:radius="4dp" />
</shape>
</item>
<!--<item android:state_pressed="true">
<shape
android:shape="rectangle" android:padding="15dp" >
<solid android:color="@color/c_background" /> <solid android:color="@color/c_background" />
<corners android:radius="4dp"/> <corners android:radius="4dp"/>
<stroke <stroke
@ -38,7 +50,7 @@
android:color="@color/c_tab_border" /> android:color="@color/c_tab_border" />
<corners android:radius="4dp" /> <corners android:radius="4dp" />
</shape> </shape>
</item> </item>-->
</selector> </selector>
</inset> </inset>
</item> </item>

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="M17,3H7c-1.1,0 -1.99,0.9 -1.99,2L5,21l7,-3 7,3V5c0,-1.1 -0.9,-2 -2,-2z"/>
</vector>

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="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/>
</vector>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/text_color_v1"/>
<stroke android:width="0dp"
android:color="#ff000000"
/>
<padding android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp"
/>
<corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp" android:topRightRadius="7dp"/>
</shape>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -7,83 +7,90 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.cardview.widget.CardView
android:id="@+id/pMainLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@xml/hox_rounded_corner" app:cardCornerRadius="5.5dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<TextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pHeader" android:id="@+id/pMainLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent"
android:layout_marginTop="10dp" android:background="@xml/hox_rounded_corner">
android:paddingEnd="15dp"
android:paddingStart="15dp"
android:text="@string/ALERT_DATA_CLEARED"
android:textAlignment="textStart"
android:textColor="@color/c_text_setting_heading_v2"
android:textSize="17sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
android:id="@+id/pDescription" android:id="@+id/pHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:alpha="0.6"
android:paddingEnd="15dp"
android:paddingStart="15dp"
android:text="@string/ALERT_DATA_CLEARED_INFO"
android:textAlignment="textStart"
android:textColor="@color/c_alert_text"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pHeader"
tools:ignore="SmallSp" />
<View
android:id="@+id/pDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="25dp"
android:background="@color/c_view_divier_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription" />
<LinearLayout
android:id="@+id/pNavigationContainer"
android:layout_width="409dp"
android:layout_height="50dp"
android:layout_marginTop="25dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription">
<Button
android:id="@+id/pDismiss"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:background="@xml/ax_ripple_default_round_bottom" android:layout_marginTop="10dp"
android:padding="0dp" android:paddingEnd="15dp"
android:text="@string/ALERT_DISMISS" android:paddingStart="15dp"
android:textAllCaps="false" android:text="@string/ALERT_DATA_CLEARED"
android:textColor="@color/c_button_text_v1" android:textAlignment="textStart"
android:textSize="15sp" android:textColor="@color/c_text_setting_heading_v2"
android:textStyle="bold" /> android:textSize="17sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout> <TextView
android:id="@+id/pDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:alpha="0.6"
android:paddingEnd="15dp"
android:paddingStart="15dp"
android:text="@string/ALERT_DATA_CLEARED_INFO"
android:textAlignment="textStart"
android:textColor="@color/c_alert_text"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pHeader"
tools:ignore="SmallSp" />
</androidx.constraintlayout.widget.ConstraintLayout> <View
android:id="@+id/pDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="25dp"
android:background="@color/c_view_divier_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription" />
<LinearLayout
android:id="@+id/pNavigationContainer"
android:layout_width="409dp"
android:layout_height="50dp"
android:layout_marginTop="25dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription">
<Button
android:id="@+id/pDismiss"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@xml/ax_ripple_default_round_bottom"
android:padding="0dp"
android:text="@string/ALERT_DISMISS"
android:textAllCaps="false"
android:textColor="@color/c_button_text_v1"
android:textSize="15sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -27,6 +27,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="3" android:layout_weight="3"
android:focusedByDefault="true" android:focusedByDefault="true"
android:textColor="@color/c_text_v1"
android:textSize="16sp" android:textSize="16sp"
android:padding="15dp" android:padding="15dp"
android:hint="@string/GENERAL_FIND_HINT" android:hint="@string/GENERAL_FIND_HINT"
@ -39,9 +40,14 @@
<TextView <TextView
android:id="@+id/pFindCount" android:id="@+id/pFindCount"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_marginEnd="5dp"
android:layout_marginStart="5dp"
android:singleLine="true"
android:width="100dp"
android:text="0/0"
android:textColor="@color/c_text_v6"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textAlignment="center" android:textAlignment="center"/>
android:layout_weight="1"/>
<View <View
android:layout_width="1dp" android:layout_width="1dp"

View File

@ -49,13 +49,6 @@
app:layout_constraintTop_toBottomOf="@+id/pHeader" app:layout_constraintTop_toBottomOf="@+id/pHeader"
tools:ignore="SmallSp" /> tools:ignore="SmallSp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="14dp"
android:background="@color/c_view_divier_background"
app:layout_constraintTop_toBottomOf="@+id/pBridgeInput" />
<EditText <EditText
android:id="@+id/pBridgeInput" android:id="@+id/pBridgeInput"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -82,13 +75,41 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription" /> app:layout_constraintTop_toBottomOf="@+id/pDescription" />
<EditText
android:id="@+id/pBridgeType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="10dp"
android:background="@xml/gx_generic_input"
android:elevation="3dp"
android:ems="10"
android:hint="@string/ALERT_ADD_BRIDGES_TYPE_HINT"
android:importantForAutofill="no"
android:inputType="text"
android:maxLines="1"
android:padding="7dp"
android:paddingStart="11dp"
android:paddingEnd="8dp"
android:textColor="@color/c_text_v1"
android:textColorHighlight="@color/text_color_highlight_v3"
android:textColorHint="@color/c_text_v2"
android:textCursorDrawable="@xml/gx_search_cursor_state"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="@+id/pDivider"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pBridgeInput" />
<View <View
android:id="@+id/pDivider" android:id="@+id/pDivider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginTop="14dp" android:layout_marginTop="15dp"
android:background="@color/c_view_divier_background" android:background="@color/c_view_divier_background"
app:layout_constraintTop_toBottomOf="@+id/pBridgeInput" /> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pBridgeType" />
<LinearLayout <LinearLayout
android:id="@+id/pNavigationContainer" android:id="@+id/pNavigationContainer"

View File

@ -152,6 +152,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:background="@xml/sx_border_left" android:background="@xml/sx_border_left"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:layout_marginStart="15dp"
android:orientation="vertical" android:orientation="vertical"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -218,6 +219,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/> android:background="@color/c_view_divier_background_inner"/>
<LinearLayout <LinearLayout
@ -274,6 +276,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/> android:background="@color/c_view_divier_background_inner"/>
<LinearLayout <LinearLayout

View File

@ -44,21 +44,22 @@
android:id="@+id/pHintWebIcon" android:id="@+id/pHintWebIcon"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:layout_marginStart="12dp" android:layout_marginStart="13dp"
android:layout_marginBottom="3dp" android:layout_marginBottom="3dp"
android:background="@xml/hox_round_outline" android:background="@xml/hox_round_outline"
android:contentDescription="@string/GENERAL_TODO" android:contentDescription="@string/GENERAL_TODO"
android:src="@xml/ic_baseline_browser" android:src="@xml/ic_baseline_browser"
app:tint="@color/c_text_v6"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/pHindTypeIcon" app:layout_constraintStart_toEndOf="@+id/pHindTypeIcon"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.578" /> app:layout_constraintVertical_bias="0.578"
app:tint="@color/c_text_v6" />
<TextView <TextView
android:id="@+id/pHeader" android:id="@+id/pHeader"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:clickable="false" android:clickable="false"
android:ellipsize="end" android:ellipsize="end"
android:paddingStart="10dp" android:paddingStart="10dp"
@ -74,6 +75,7 @@
android:id="@+id/pHeaderSingle" android:id="@+id/pHeaderSingle"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="55dp" android:layout_height="55dp"
android:layout_marginStart="5dp"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:clickable="false" android:clickable="false"
android:ellipsize="end" android:ellipsize="end"
@ -91,6 +93,7 @@
android:id="@+id/pURL" android:id="@+id/pURL"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:clickable="false" android:clickable="false"
android:ellipsize="end" android:ellipsize="end"

View File

@ -16,7 +16,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">f
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/pAppbar" android:id="@+id/pAppbar"

View File

@ -277,6 +277,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:background="@xml/sx_border_left" android:background="@xml/sx_border_left"
android:layout_marginLeft="15dp"
android:orientation="vertical" android:orientation="vertical"
android:layout_height="wrap_content" > android:layout_height="wrap_content" >
@ -338,6 +339,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner" /> android:background="@color/c_view_divier_background_inner" />
<LinearLayout <LinearLayout
@ -438,6 +440,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:layout_marginLeft="15dp"
android:background="@xml/sx_border_left" android:background="@xml/sx_border_left"
android:orientation="vertical" android:orientation="vertical"
android:layout_height="wrap_content" > android:layout_height="wrap_content" >
@ -500,6 +503,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner" /> android:background="@color/c_view_divier_background_inner" />
<LinearLayout <LinearLayout

View File

@ -249,6 +249,7 @@
android:background="@xml/sx_border_left" android:background="@xml/sx_border_left"
android:layout_marginTop="15dp" android:layout_marginTop="15dp"
android:orientation="vertical" android:orientation="vertical"
android:layout_marginLeft="15dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:ignore="RtlSymmetry"> tools:ignore="RtlSymmetry">
@ -314,6 +315,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/> android:background="@color/c_view_divier_background_inner"/>
<LinearLayout <LinearLayout
@ -370,6 +372,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/> android:background="@color/c_view_divier_background_inner"/>
<LinearLayout <LinearLayout

View File

@ -12,6 +12,7 @@
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:orientation="vertical" android:orientation="vertical"
android:paddingBottom="100dp"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<!-- Title Header --> <!-- Title Header -->
@ -372,205 +373,6 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/pOption3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="7">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:orientation="vertical"
tools:ignore="UselessParent">
<TextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="12dp"
android:alpha="1"
android:background="@android:color/transparent"
android:clickable="false"
android:padding="0dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES"
android:textAlignment="textStart"
android:textAllCaps="false"
android:textColor="@color/c_text_v1"
android:textSize="14sp"
tools:ignore="RtlSymmetry" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:alpha="1"
android:background="@android:color/transparent"
android:clickable="false"
android:padding="0dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES_INFO"
android:textAlignment="textStart"
android:textAllCaps="false"
android:textColor="@color/c_text_v6"
android:textSize="13.5sp"
tools:ignore="RtlSymmetry" />
<LinearLayout
android:layout_width="match_parent"
android:layout_marginTop="10dp"
android:background="@xml/sx_border_left"
android:paddingStart="0dp"
android:layoutDirection="ltr"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="RtlSymmetry">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="-1dp"
android:elevation="2dp"
android:background="@color/white"/>
<LinearLayout
android:id="@+id/pCookieOption1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:onClick="onCookies"
android:layoutDirection="ltr"
android:layout_marginEnd="0dp"
android:layout_marginStart="4dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption1"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingEnd="15dp"
android:clickable="false"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:textColor="@color/c_text_v1"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:paddingStart="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION1"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/c_view_divier_background_inner"/>
<LinearLayout
android:id="@+id/pCookieOption2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:layoutDirection="ltr"
android:layout_marginEnd="0dp"
android:layout_marginStart="4dp"
android:onClick="onCookies"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption2"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingEnd="15dp"
android:textColor="@color/c_text_v1"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:paddingStart="15dp"
android:clickable="false"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION2"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/c_view_divier_background_inner"/>
<LinearLayout
android:id="@+id/pCookieOption3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:layoutDirection="ltr"
android:layout_marginEnd="0dp"
android:layout_marginStart="4dp"
android:onClick="onCookies"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption3"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:clickable="false"
android:paddingEnd="15dp"
android:textColor="@color/c_text_v1"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:paddingStart="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION3"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/c_view_divier_background_inner"/>
<LinearLayout
android:id="@+id/pCookieOption4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:onClick="onCookies"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption4"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:clickable="false"
android:paddingEnd="15dp"
android:textColor="@color/c_text_v1"
android:layout_marginEnd="10dp"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:paddingStart="15dp"
android:layout_marginStart="10dp"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION4"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:elevation="4dp"
android:layout_marginTop="0.5dp"
android:background="@color/c_view_divier_background_inner"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/pOption4" android:id="@+id/pOption4"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -638,6 +440,209 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/pOption3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="7">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
android:orientation="vertical"
tools:ignore="UselessParent">
<TextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginTop="12dp"
android:alpha="1"
android:background="@android:color/transparent"
android:clickable="false"
android:padding="0dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES"
android:textAlignment="textStart"
android:textAllCaps="false"
android:textColor="@color/c_text_v1"
android:textSize="14sp"
tools:ignore="RtlSymmetry" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:alpha="1"
android:background="@android:color/transparent"
android:clickable="false"
android:padding="0dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES_INFO"
android:textAlignment="textStart"
android:textAllCaps="false"
android:textColor="@color/c_text_v6"
android:textSize="13.5sp"
tools:ignore="RtlSymmetry" />
<LinearLayout
android:layout_width="match_parent"
android:layout_marginTop="10dp"
android:background="@xml/sx_border_left"
android:paddingStart="0dp"
android:layout_marginLeft="15dp"
android:layoutDirection="ltr"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:ignore="RtlSymmetry">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="-1dp"
android:elevation="2dp"
android:background="@color/white"/>
<LinearLayout
android:id="@+id/pCookieOption1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:onClick="onCookies"
android:layoutDirection="ltr"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption1"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingEnd="15dp"
android:clickable="false"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:textColor="@color/c_text_v1"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:paddingStart="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION1"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/>
<LinearLayout
android:id="@+id/pCookieOption2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:layoutDirection="ltr"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:onClick="onCookies"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption2"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:paddingEnd="15dp"
android:textColor="@color/c_text_v1"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:paddingStart="15dp"
android:clickable="false"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION2"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/>
<LinearLayout
android:id="@+id/pCookieOption3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:layoutDirection="ltr"
android:layout_marginEnd="0dp"
android:layout_marginStart="0dp"
android:onClick="onCookies"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption3"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:clickable="false"
android:paddingEnd="15dp"
android:textColor="@color/c_text_v1"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:paddingStart="15dp"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION3"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/>
<LinearLayout
android:id="@+id/pCookieOption4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@xml/gx_ripple_gray"
android:onClick="onCookies"
android:orientation="horizontal">
<RadioButton
android:id="@+id/pCookieRadioOption4"
android:layoutDirection="rtl"
android:layout_width="match_parent"
android:layout_height="50dp"
android:clickable="false"
android:paddingEnd="15dp"
android:textColor="@color/c_text_v1"
android:layout_marginEnd="10dp"
android:background="@android:color/transparent"
android:buttonTint="@color/c_radio_tint"
android:paddingStart="15dp"
android:layout_marginStart="10dp"
android:text="@string/SETTING_PRIVACY_COOKIES_OPTION4"
tools:ignore="RtlHardcoded" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:elevation="4dp"
android:layout_marginTop="0.5dp"
android:background="@color/c_view_divier_background_inner"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -116,6 +116,7 @@
android:id="@+id/pOption3" android:id="@+id/pOption3"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:orientation="horizontal" android:orientation="horizontal"
android:weightSum="7"> android:weightSum="7">
@ -177,6 +178,7 @@
android:layout_marginEnd="42dp" android:layout_marginEnd="42dp"
android:layout_marginTop="-2dp" android:layout_marginTop="-2dp"
android:paddingEnd="17dp" android:paddingEnd="17dp"
android:textColor="@color/c_text_v6"
android:textSize="13sp" android:textSize="13sp"
android:text="@string/SETTING_PRIVACY_TRACKING_OPTION1_INFO" android:text="@string/SETTING_PRIVACY_TRACKING_OPTION1_INFO"
/> />
@ -185,6 +187,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/> android:background="@color/c_view_divier_background_inner"/>
<LinearLayout <LinearLayout
@ -221,6 +224,7 @@
android:layout_marginStart="20dp" android:layout_marginStart="20dp"
android:layout_marginEnd="42dp" android:layout_marginEnd="42dp"
android:layout_marginTop="-2dp" android:layout_marginTop="-2dp"
android:textColor="@color/c_text_v6"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:textSize="13sp" android:textSize="13sp"
android:text="@string/SETTING_PRIVACY_TRACKING_OPTION2_INFO" android:text="@string/SETTING_PRIVACY_TRACKING_OPTION2_INFO"
@ -230,6 +234,7 @@
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="4dp"
android:background="@color/c_view_divier_background_inner"/> android:background="@color/c_view_divier_background_inner"/>
<LinearLayout <LinearLayout
@ -268,6 +273,7 @@
android:layout_marginTop="-2dp" android:layout_marginTop="-2dp"
android:paddingEnd="16dp" android:paddingEnd="16dp"
android:textSize="13sp" android:textSize="13sp"
android:textColor="@color/c_text_v6"
android:text="@string/SETTING_PRIVACY_TRACKING_OPTION3_INFO" android:text="@string/SETTING_PRIVACY_TRACKING_OPTION3_INFO"
/> />
</LinearLayout> </LinearLayout>

View File

@ -4,7 +4,7 @@
android:id="@+id/pRowContainer" android:id="@+id/pRowContainer"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="220dp" android:layout_height="220dp"
android:layout_marginTop="0dp" android:layout_marginTop="-5dp"
android:layout_marginStart="0dp" android:layout_marginStart="0dp"
android:clickable="true" android:clickable="true"
android:background="@color/clear_alpha" android:background="@color/clear_alpha"
@ -18,20 +18,25 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:layout_marginStart="0dp" android:layout_marginStart="0dp"
app:cardElevation="5dp" app:cardElevation="4dp"
app:cardUseCompatPadding="true" app:cardUseCompatPadding="true"
android:background="@color/clear_alpha" app:cardBackgroundColor="@color/blue"
app:cardCornerRadius="4dp" app:cardCornerRadius="4dp"
app:cardPreventCornerOverlap="false"
android:clipChildren="true" android:clipChildren="true"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.cardview.widget.CardView
android:id="@+id/pRowContainerInner" android:id="@+id/pRowContainerInner"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:clickable="true" android:clickable="true"
android:background="@xml/tx_card_corner"
app:cardBackgroundColor="@color/c_background"
android:layout_margin="2dp"
android:focusable="true" android:focusable="true"
android:clipChildren="true"
android:longClickable="true" android:longClickable="true"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingEnd="0dp" android:paddingEnd="0dp"
@ -45,7 +50,8 @@
android:id="@+id/cardView" android:id="@+id/cardView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="38dp" android:layout_marginTop="39dp"
app:cardBackgroundColor="@color/c_background"
android:background="@xml/tx_border" android:background="@xml/tx_border"
android:clipChildren="true" android:clipChildren="true"
android:elevation="0dp" android:elevation="0dp"
@ -60,6 +66,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="center" android:layout_gravity="center"
app:cardBackgroundColor="@color/c_background"
app:cardCornerRadius="0dp" app:cardCornerRadius="0dp"
app:cardElevation="0dp" app:cardElevation="0dp"
app:contentPadding="0dp"> app:contentPadding="0dp">
@ -79,17 +86,19 @@
android:id="@+id/pSelectedView" android:id="@+id/pSelectedView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:alpha="0" android:layout_marginTop="0dp"
android:alpha="9"
android:background="@xml/tx_border_image_dark_no_corner" android:background="@xml/tx_border_image_dark_no_corner"
android:translationZ="15dp" android:translationZ="15dp"
android:visibility="visible"> android:visibility="gone">
<ImageView <ImageView
android:id="@+id/imageView3" android:id="@+id/imageView3"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:alpha="0.7"
android:contentDescription="@string/GENERAL_TODO" android:contentDescription="@string/GENERAL_TODO"
android:padding="65dp" android:padding="54dp"
android:src="@drawable/tick_recycler_view" /> android:src="@drawable/tick_recycler_view" />
</FrameLayout> </FrameLayout>
@ -99,9 +108,10 @@
android:id="@+id/linearLayout" android:id="@+id/linearLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="30dp" android:layout_height="30dp"
android:layout_marginStart="30dp" android:layout_marginStart="40dp"
android:layout_marginTop="3dp" android:layout_marginTop="4dp"
android:layout_weight="6" android:layout_weight="6"
android:layout_marginEnd="25dp"
android:background="@color/c_background" android:background="@color/c_background"
android:clickable="false" android:clickable="false"
android:focusable="false" android:focusable="false"
@ -118,7 +128,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="0dp" android:layout_marginStart="0dp"
android:layout_marginLeft="10dp" android:layout_marginLeft="25dp"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:clickable="false" android:clickable="false"
android:ellipsize="end" android:ellipsize="end"
@ -190,17 +200,43 @@
android:id="@+id/view7" android:id="@+id/view7"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginTop="5dp" android:layout_marginTop="38dp"
android:background="@color/c_view_divier_background" android:background="@color/c_view_divier_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout" /> app:layout_constraintTop_toBottomOf="@+id/linearLayout" />
<ImageView
android:id="@+id/pBorder"
android:layout_width="30dp"
android:layout_height="12dp"
android:background="@color/c_view_divier_background_inner"
android:contentDescription="@string/GENERAL_TODO"
android:layout_gravity="end"
android:visibility="visible" />
<ImageButton
android:id="@+id/pRemoveRow"
android:layout_width="39dp"
android:layout_height="39dp"
android:background="@xml/tx_ripple_light"
android:contentDescription="@string/GENERAL_TODO"
android:elevation="11dp"
android:longClickable="true"
android:outlineProvider="none"
android:padding="10dp"
android:paddingTop="22dp"
android:paddingBottom="22dp"
android:scaleType="fitCenter"
android:src="@xml/ic_baseline_cross"
android:tint="@color/c_navigation_tint"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlSymmetry" />
<ImageView <ImageView
android:id="@+id/pLoadSession" android:id="@+id/pLoadSession"
android:layout_width="0dp" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@xml/gx_ripple_light"
android:clickable="true" android:clickable="true"
android:contentDescription="@string/GENERAL_TODO" android:contentDescription="@string/GENERAL_TODO"
android:focusable="true" android:focusable="true"
@ -212,40 +248,8 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/pBorder"
android:layout_width="match_parent"
android:layout_height="6dp"
android:background="@color/c_ripple_v2"
android:contentDescription="@string/GENERAL_TODO"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton </androidx.cardview.widget.CardView>
android:id="@+id/pRemoveRow"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="3dp"
android:background="@xml/tx_ripple_light"
android:contentDescription="@string/GENERAL_TODO"
android:elevation="11dp"
android:longClickable="true"
android:outlineProvider="none"
android:padding="8dp"
android:paddingTop="22dp"
android:paddingBottom="22dp"
android:scaleType="fitCenter"
android:src="@xml/ic_baseline_cross"
android:tint="@color/c_navigation_tint"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="RtlSymmetry" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<FrameLayout <FrameLayout
@ -260,10 +264,10 @@
android:id="@+id/pItemSelectionMenuButton" android:id="@+id/pItemSelectionMenuButton"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginStart="5dp" android:layout_marginStart="4dp"
android:layout_marginEnd="5dp" android:layout_marginEnd="4dp"
android:layout_marginTop="5dp" android:layout_marginTop="7dp"
android:layout_marginBottom="5dp" android:layout_marginBottom="8dp"
android:textSize="16sp" android:textSize="16sp"
android:textAllCaps="false" android:textAllCaps="false"
android:background="@xml/hox_rounded_corner_suggestion_settings" android:background="@xml/hox_rounded_corner_suggestion_settings"

View File

@ -28,7 +28,7 @@
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<LinearLayout <LinearLayout
android:id="@+id/pNewTab" android:id="@+id/pNewTabMenu"
android:onClick="onMenuTrigger" android:onClick="onMenuTrigger"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="52dp" android:layout_height="52dp"

View File

@ -75,9 +75,11 @@
<ImageView <ImageView
android:id="@+id/imageView3" android:id="@+id/imageView3"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:alpha="0.7"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:contentDescription="@string/GENERAL_TODO" android:contentDescription="@string/GENERAL_TODO"
android:padding="19dp" android:padding="12dp"
android:layout_marginTop="5dp"
android:src="@drawable/tick_recycler_view" /> android:src="@drawable/tick_recycler_view" />
</FrameLayout> </FrameLayout>

View File

@ -148,9 +148,10 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_gravity="fill_vertical" android:layout_gravity="fill_vertical"
android:layout_marginTop="60dp" android:layout_marginTop="60dp"
android:paddingEnd="10dp" android:paddingEnd="5dp"
android:paddingStart="10dp" android:paddingStart="5dp"
android:background="@color/clear_alpha" android:paddingTop="10dp"
android:background="@color/c_background"
android:fillViewport="true" android:fillViewport="true"
android:translationZ="2dp" android:translationZ="2dp"
app:layout_behavior="@string/appbar_scrolling_view_behavior" app:layout_behavior="@string/appbar_scrolling_view_behavior"

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">Excepció de seguretat del domini web.</string> <string name="security_exception" translatable="true">Excepció de seguretat del domini web.</string>
<string name="dal_exception" translatable="true">Error de verificació DAL.</string> <string name="dal_exception" translatable="true">Error de verificació DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Pestanyes recents</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Nova identitat</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Política de privacitat</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Política de privadesa Genesis Browser</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Lloc web d\'informes</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Informeu dun lloc web il·legal</string>
<string name="SETTING_SITEMAP" translatable="true">publiqueu el vostre lloc web</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Afegiu el vostre lloc web al nostre motor de cerca</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">Výjimka zabezpečení webové domény.</string> <string name="security_exception" translatable="true">Výjimka zabezpečení webové domény.</string>
<string name="dal_exception" translatable="true">Selhání ověření DAL.</string> <string name="dal_exception" translatable="true">Selhání ověření DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Nedávné karty</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Nová identita</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Zásady ochrany osobních údajů</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Zásady ochrany osobních údajů Genesis Browser</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Nahlásit web</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Nahlásit nelegální web</string>
<string name="SETTING_SITEMAP" translatable="true">zveřejněte svůj web</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Přidejte svůj web do našeho vyhledávače</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">Sicherheitsausnahme für Webdomänen.</string> <string name="security_exception" translatable="true">Sicherheitsausnahme für Webdomänen.</string>
<string name="dal_exception" translatable="true">Fehler bei der DAL-Überprüfung.</string> <string name="dal_exception" translatable="true">Fehler bei der DAL-Überprüfung.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Den letzten Tabs</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Neue Identität</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Datenschutz-Bestimmungen</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser Datenschutzbestimmungen</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Website melden</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Illegale Website melden</string>
<string name="SETTING_SITEMAP" translatable="true">Veröffentlichen Sie Ihre Website</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Fügen Sie Ihre Website unserer Suchmaschine hinzu</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">Εξαίρεση ασφάλειας τομέα διαδικτύου.</string> <string name="security_exception" translatable="true">Εξαίρεση ασφάλειας τομέα διαδικτύου.</string>
<string name="dal_exception" translatable="true">Αποτυχία επαλήθευσης DAL.</string> <string name="dal_exception" translatable="true">Αποτυχία επαλήθευσης DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Πρόσφατες καρτέλες</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Νέα ταυτότητα</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Πολιτική απορρήτου</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser πολιτική απορρήτου</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Αναφορά ιστότοπου</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Αναφορά παράνομου ιστότοπου</string>
<string name="SETTING_SITEMAP" translatable="true">δημοσιεύστε τον ιστότοπό σας</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Προσθέστε τον ιστότοπό σας στη μηχανή αναζήτησης</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">Exception de sécurité de domaine Web.</string> <string name="security_exception" translatable="true">Exception de sécurité de domaine Web.</string>
<string name="dal_exception" translatable="true">Échec de la vérification DAL.</string> <string name="dal_exception" translatable="true">Échec de la vérification DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Onglets récents</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Nouvelle identité</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Politique de confidentialité</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser Politique de confidentialité</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Signaler le site Web</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Signaler un site Web illégal</string>
<string name="SETTING_SITEMAP" translatable="true">publier votre site web</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Ajoutez votre site Web à notre moteur de recherche</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -383,7 +383,6 @@
<string name="ERROR_M5" translatable="true">kérjük, lépjen kapcsolatba a weboldal tulajdonosával, hogy tájékoztassa őket erről a problémáról.</string> <string name="ERROR_M5" translatable="true">kérjük, lépjen kapcsolatba a weboldal tulajdonosával, hogy tájékoztassa őket erről a problémáról.</string>
<string name="ERROR_M6" translatable="true">újratöltés</string> <string name="ERROR_M6" translatable="true">újratöltés</string>
<string name="PREF_LANGUAGE" translatable="true">pref_language</string> <string name="PREF_LANGUAGE" translatable="true">pref_language</string>
<string name="invalid_package_signature" translatable="true">Érvénytelen csomag aláírás</string> <string name="invalid_package_signature" translatable="true">Érvénytelen csomag aláírás</string>
<string name="autofill_sign_in_prompt" translatable="true">kattintson a bejelentkezéshez.</string> <string name="autofill_sign_in_prompt" translatable="true">kattintson a bejelentkezéshez.</string>
@ -391,6 +390,15 @@
<string name="security_exception" translatable="true">Web domain biztonsági kivétel.</string> <string name="security_exception" translatable="true">Web domain biztonsági kivétel.</string>
<string name="dal_exception" translatable="true">DAL ellenőrzési hiba.</string> <string name="dal_exception" translatable="true">DAL ellenőrzési hiba.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Legutóbbi lapok</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Új identitás</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Adatvédelmi irányelvek</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser adatvédelmi irányelvek</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Webhely jelentése</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Illegális weboldal bejelentése</string>
<string name="SETTING_SITEMAP" translatable="true">tegye közzé webhelyét</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Adja hozzá webhelyét keresőmotorunkhoz</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -371,6 +371,15 @@
<string name="security_exception" translatable="true">Web domain security exception.</string> <string name="security_exception" translatable="true">Web domain security exception.</string>
<string name="dal_exception" translatable="true">DAL verification failure.</string> <string name="dal_exception" translatable="true">DAL verification failure.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Tab terbaru</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Identitas baru</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Kebijakan pribadi</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser kebijakan privasi</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Laporkan Situs Web</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Laporkan situs web ilegal</string>
<string name="SETTING_SITEMAP" translatable="true">publikasikan situs web Anda</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Tambahkan situs web Anda ke mesin pencari kami</string>
<item type="id" name="LaguageID"/> <item type="id" name="LaguageID"/>
<item type="id" name="LaguageRegion"/> <item type="id" name="LaguageRegion"/>

View File

@ -383,7 +383,6 @@
<string name="ERROR_M5" translatable="true">si prega di contattare i proprietari del sito web per informarli di questo problema.</string> <string name="ERROR_M5" translatable="true">si prega di contattare i proprietari del sito web per informarli di questo problema.</string>
<string name="ERROR_M6" translatable="true">ricaricare</string> <string name="ERROR_M6" translatable="true">ricaricare</string>
<string name="PREF_LANGUAGE" translatable="true">pref_language</string> <string name="PREF_LANGUAGE" translatable="true">pref_language</string>
<string name="invalid_package_signature" translatable="true">Firma del pacchetto non valida</string> <string name="invalid_package_signature" translatable="true">Firma del pacchetto non valida</string>
<string name="autofill_sign_in_prompt" translatable="true">fare clic per accedere.</string> <string name="autofill_sign_in_prompt" translatable="true">fare clic per accedere.</string>
@ -391,6 +390,15 @@
<string name="security_exception" translatable="true">Eccezione di sicurezza del dominio Web.</string> <string name="security_exception" translatable="true">Eccezione di sicurezza del dominio Web.</string>
<string name="dal_exception" translatable="true">DAL verification failure.</string> <string name="dal_exception" translatable="true">DAL verification failure.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Schede recenti</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Nuova identità</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">politica sulla riservatezza</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser informativa sulla privacy</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Segnala sito web</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Segnala sito web illegale</string>
<string name="SETTING_SITEMAP" translatable="true">pubblica il tuo sito web</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Aggiungi il tuo sito web al nostro motore di ricerca</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -383,6 +383,14 @@
<string name="ERROR_M5" translatable="true">この問題については、Webサイトの所有者に連絡してください。</string> <string name="ERROR_M5" translatable="true">この問題については、Webサイトの所有者に連絡してください。</string>
<string name="ERROR_M6" translatable="true">リロード</string> <string name="ERROR_M6" translatable="true">リロード</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">最近のタブ</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">新しいアイデンティティ</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">個人情報保護方針</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser プライバシーポリシー</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">レポートのウェブサイト</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">違法なウェブサイトを報告する</string>
<string name="SETTING_SITEMAP" translatable="true">あなたのウェブサイトを公開する</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">あなたのウェブサイトを私たちの検索エンジンに追加してください</string>
<string name="PREF_LANGUAGE" translatable="true">pref_language</string> <string name="PREF_LANGUAGE" translatable="true">pref_language</string>
<string name="invalid_package_signature" translatable="true">無効なパッケージ署名</string> <string name="invalid_package_signature" translatable="true">無効なパッケージ署名</string>

View File

@ -423,6 +423,15 @@
<item>비 추적기 허용</item> <item>비 추적기 허용</item>
</string-array> </string-array>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">최근 탭</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">새로운 정체성</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">개인 정보 정책</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser 개인 정보 보호 정책</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">웹 사이트 신고</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">불법 웹 사이트 신고</string>
<string name="SETTING_SITEMAP" translatable="true">웹 사이트 게시</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">검색 엔진에 웹 사이트 추가</string>
<!-- Generated by Automatic String Resource Translation --> <!-- Generated by Automatic String Resource Translation -->
<!-- https://asrt.gluege.boerde.de --> <!-- https://asrt.gluege.boerde.de -->
</resources> </resources>

View File

@ -374,6 +374,15 @@
<string name="security_exception" translatable="true">Web domain security exception.</string> <string name="security_exception" translatable="true">Web domain security exception.</string>
<string name="dal_exception" translatable="true">DAL verification failure.</string> <string name="dal_exception" translatable="true">DAL verification failure.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Recente tabbladen</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Nieuwe identiteit</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Privacybeleid</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser privacybeleid</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Website melden</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Meld illegale website</string>
<string name="SETTING_SITEMAP" translatable="true">publiceer uw website</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Voeg uw website toe aan onze zoekmachine</string>
<item type="id" name="LaguageID"/> <item type="id" name="LaguageID"/>
<item type="id" name="LaguageRegion"/> <item type="id" name="LaguageRegion"/>

View File

@ -383,6 +383,14 @@
<string name="ERROR_M5" translatable="true">entre em contato com os proprietários do site para informá-los sobre este problema.</string> <string name="ERROR_M5" translatable="true">entre em contato com os proprietários do site para informá-los sobre este problema.</string>
<string name="ERROR_M6" translatable="true">recarregar</string> <string name="ERROR_M6" translatable="true">recarregar</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Guia recente</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Nova identidade</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Política de privacidade</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser política de privacidade</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Site Do Relatório</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Denunciar sites ilegais</string>
<string name="SETTING_SITEMAP" translatable="true">publique seu site</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Adicione o seu site ao nosso mecanismo de pesquisa</string>
<string name="PREF_LANGUAGE" translatable="true">pref_language</string> <string name="PREF_LANGUAGE" translatable="true">pref_language</string>
<string name="invalid_package_signature" translatable="true">Assinatura de pacote inválida</string> <string name="invalid_package_signature" translatable="true">Assinatura de pacote inválida</string>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">Excepție de securitate a domeniului web.</string> <string name="security_exception" translatable="true">Excepție de securitate a domeniului web.</string>
<string name="dal_exception" translatable="true">Eșec de verificare DAL.</string> <string name="dal_exception" translatable="true">Eșec de verificare DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Filele recente</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Identitate nouă</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Politica de confidențialitate</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser politica de confidențialitate</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Raportați site-ul web</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Raportați site-ul ilegal</string>
<string name="SETTING_SITEMAP" translatable="true">publică-ți site-ul web</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Adăugați site-ul dvs. la motorul nostru de căutare</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -383,7 +383,6 @@
<string name="ERROR_M5" translatable="true">пожалуйста, свяжитесь с владельцами веб-сайтов, чтобы сообщить им об этой проблеме.</string> <string name="ERROR_M5" translatable="true">пожалуйста, свяжитесь с владельцами веб-сайтов, чтобы сообщить им об этой проблеме.</string>
<string name="ERROR_M6" translatable="true">перезагрузить</string> <string name="ERROR_M6" translatable="true">перезагрузить</string>
<string name="PREF_LANGUAGE" translatable="true">pref_language</string> <string name="PREF_LANGUAGE" translatable="true">pref_language</string>
<string name="invalid_package_signature" translatable="true">Неверная подпись пакета</string> <string name="invalid_package_signature" translatable="true">Неверная подпись пакета</string>
<string name="autofill_sign_in_prompt" translatable="true">нажмите, чтобы войти.</string> <string name="autofill_sign_in_prompt" translatable="true">нажмите, чтобы войти.</string>
@ -391,6 +390,15 @@
<string name="security_exception" translatable="true">Исключение безопасности веб-домена.</string> <string name="security_exception" translatable="true">Исключение безопасности веб-домена.</string>
<string name="dal_exception" translatable="true">Ошибка проверки DAL.</string> <string name="dal_exception" translatable="true">Ошибка проверки DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Недавние вкладки</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Новая личность</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Политика конфиденциальности</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Политика конфиденциальности Genesis Browser</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Веб-сайт отчета</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Сообщить о незаконном веб-сайте</string>
<string name="SETTING_SITEMAP" translatable="true">опубликуйте свой сайт</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Добавьте свой сайт в нашу поисковую систему</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">ข้อยกเว้นด้านความปลอดภัยของโดเมนเว็บ</string> <string name="security_exception" translatable="true">ข้อยกเว้นด้านความปลอดภัยของโดเมนเว็บ</string>
<string name="dal_exception" translatable="true">การตรวจสอบ DAL ล้มเหลว</string> <string name="dal_exception" translatable="true">การตรวจสอบ DAL ล้มเหลว</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">แท็บล่าสุด</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">เอกลักษณ์ใหม่</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">นโยบายความเป็นส่วนตัว</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser นโยบายความเป็นส่วนตัว</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">รายงานเว็บไซต์</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">รายงานเว็บไซต์ที่ผิดกฎหมาย</string>
<string name="SETTING_SITEMAP" translatable="true">เผยแพร่เว็บไซต์ของคุณ</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">เพิ่มเว็บไซต์ของคุณในเครื่องมือค้นหาของเรา</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -375,7 +375,6 @@
<string name="LANDING_BROWSE_INFO" translatable="true">"İnternette beklediğiniz şekilde göz atın."</string> <string name="LANDING_BROWSE_INFO" translatable="true">"İnternette beklediğiniz şekilde göz atın."</string>
<string name="LANDING_NO_TRACKING" translatable="true">"Kullanıcı Gözetim Koruması yok. Sansür yok."</string> <string name="LANDING_NO_TRACKING" translatable="true">"Kullanıcı Gözetim Koruması yok. Sansür yok."</string>
<string name="ERROR_M1" translatable="true">bu siteye ulaşılamıyor</string> <string name="ERROR_M1" translatable="true">bu siteye ulaşılamıyor</string>
<string name="ERROR_M2" translatable="true">web sitesine bağlanırken bir hata oluştu</string> <string name="ERROR_M2" translatable="true">web sitesine bağlanırken bir hata oluştu</string>
<string name="ERROR_M3" translatable="true">görüntülemeye çalıştığınız sayfa, alınan verilerin gerçekliği doğrulanamadığı için gösterilemiyor</string> <string name="ERROR_M3" translatable="true">görüntülemeye çalıştığınız sayfa, alınan verilerin gerçekliği doğrulanamadığı için gösterilemiyor</string>
@ -383,7 +382,6 @@
<string name="ERROR_M5" translatable="true">Bu sorunu bildirmek için lütfen web sitesi sahipleriyle iletişime geçin.</string> <string name="ERROR_M5" translatable="true">Bu sorunu bildirmek için lütfen web sitesi sahipleriyle iletişime geçin.</string>
<string name="ERROR_M6" translatable="true">Tekrar yükle</string> <string name="ERROR_M6" translatable="true">Tekrar yükle</string>
<string name="PREF_LANGUAGE" translatable="true">pref_language</string> <string name="PREF_LANGUAGE" translatable="true">pref_language</string>
<string name="invalid_package_signature" translatable="true">Geçersiz paket imzası</string> <string name="invalid_package_signature" translatable="true">Geçersiz paket imzası</string>
<string name="autofill_sign_in_prompt" translatable="true">oturum açmak için tıklayın.</string> <string name="autofill_sign_in_prompt" translatable="true">oturum açmak için tıklayın.</string>
@ -391,6 +389,15 @@
<string name="security_exception" translatable="true">Web alanı güvenlik istisnası.</string> <string name="security_exception" translatable="true">Web alanı güvenlik istisnası.</string>
<string name="dal_exception" translatable="true">DAL doğrulama hatası.</string> <string name="dal_exception" translatable="true">DAL doğrulama hatası.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Son sekmeler</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Yeni kimlik</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Gizlilik Politikası</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser gizlilik ilkesi</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Web sitesini bildir</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Yasadışı web sitesini bildirin</string>
<string name="SETTING_SITEMAP" translatable="true">web sitenizi yayınlayın</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Web sitenizi arama motorumuza ekleyin</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -376,6 +376,15 @@
<string name="security_exception" translatable="true">Виняток безпеки веб-домену.</string> <string name="security_exception" translatable="true">Виняток безпеки веб-домену.</string>
<string name="dal_exception" translatable="true">Помилка перевірки DAL.</string> <string name="dal_exception" translatable="true">Помилка перевірки DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Останні вкладки</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Нова ідентичність</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Політика конфіденційності</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser Політика конфіденційності</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Веб-сайт звітів</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Повідомити про незаконний веб-сайт</string>
<string name="SETTING_SITEMAP" translatable="true">опублікуйте свій веб-сайт</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Додайте свій веб-сайт у нашу пошукову систему</string>
<item type="id" name="LaguageID"/> <item type="id" name="LaguageID"/>
<item type="id" name="LaguageRegion"/> <item type="id" name="LaguageRegion"/>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">ویب ڈومین سیکیورٹی کی رعایت۔</string> <string name="security_exception" translatable="true">ویب ڈومین سیکیورٹی کی رعایت۔</string>
<string name="dal_exception" translatable="true">DAL تصدیق میں ناکامی۔</string> <string name="dal_exception" translatable="true">DAL تصدیق میں ناکامی۔</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">حالیہ ٹیبز</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">نئی شناخت</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">رازداری کی پالیسی</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true"> رازداری کی پالیسی</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">رپورٹ ویب سائٹ</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">غیر قانونی ویب سائٹ کی اطلاع دیں</string>
<string name="SETTING_SITEMAP" translatable="true">اپنی ویب سائٹ شائع کریں</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">اپنی ویب سائٹ کو ہمارے سرچ انجن میں شامل کریں</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -391,6 +391,15 @@
<string name="security_exception" translatable="true">Ngoại lệ bảo mật tên miền web.</string> <string name="security_exception" translatable="true">Ngoại lệ bảo mật tên miền web.</string>
<string name="dal_exception" translatable="true">Không xác minh được DAL.</string> <string name="dal_exception" translatable="true">Không xác minh được DAL.</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">Các tab gần đây</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">Nhận dạng mới</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">Chính sách bảo mật</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser chính sách về quyền riêng tư</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">Báo cáo trang web</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">Báo cáo trang web bất hợp pháp</string>
<string name="SETTING_SITEMAP" translatable="true">xuất bản trang web của bạn</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">Thêm trang web của bạn vào công cụ tìm kiếm của chúng tôi</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -375,7 +375,6 @@
<string name="LANDING_BROWSE_INFO" translatable="true">“向互联网浏览您的期望。”</string> <string name="LANDING_BROWSE_INFO" translatable="true">“向互联网浏览您的期望。”</string>
<string name="LANDING_NO_TRACKING" translatable="true">“没有用户监督保护。没有审查。”</string> <string name="LANDING_NO_TRACKING" translatable="true">“没有用户监督保护。没有审查。”</string>
<string name="ERROR_M1" translatable="true">该网站无法访问</string> <string name="ERROR_M1" translatable="true">该网站无法访问</string>
<string name="ERROR_M2" translatable="true">与网站连接时发生错误</string> <string name="ERROR_M2" translatable="true">与网站连接时发生错误</string>
<string name="ERROR_M3" translatable="true">您尝试查看的页面无法显示,因为无法验证所接收数据的真实性</string> <string name="ERROR_M3" translatable="true">您尝试查看的页面无法显示,因为无法验证所接收数据的真实性</string>
@ -383,7 +382,6 @@
<string name="ERROR_M5" translatable="true">请与网站所有者联系,以告知他们该问题。</string> <string name="ERROR_M5" translatable="true">请与网站所有者联系,以告知他们该问题。</string>
<string name="ERROR_M6" translatable="true">重装</string> <string name="ERROR_M6" translatable="true">重装</string>
<string name="PREF_LANGUAGE" translatable="true">pref_language</string> <string name="PREF_LANGUAGE" translatable="true">pref_language</string>
<string name="invalid_package_signature" translatable="true">无效的包裹签名</string> <string name="invalid_package_signature" translatable="true">无效的包裹签名</string>
<string name="autofill_sign_in_prompt" translatable="true">单击以登录。</string> <string name="autofill_sign_in_prompt" translatable="true">单击以登录。</string>
@ -391,6 +389,15 @@
<string name="security_exception" translatable="true">Web域安全异常。</string> <string name="security_exception" translatable="true">Web域安全异常。</string>
<string name="dal_exception" translatable="true">DAL验证失败。</string> <string name="dal_exception" translatable="true">DAL验证失败。</string>
<string name="HOME_MENU_OPEN_RECENT_TAB" translatable="true">最近的标签</string>
<string name="HOME_MENU__NEW_CIRCUIT" translatable="true">新身份</string>
<string name="SETTING_PRIVACY_POLICY" translatable="true">隐私政策</string>
<string name="SETTING_PRIVACY_POLICY_INFO" translatable="true">Genesis Browser 隐私政策</string>
<string name="SETTING_REPORT_WEBSITE" translatable="true">报告网站</string>
<string name="SETTING_REPORT_WEBSITE_INFO" translatable="true">举报非法网站</string>
<string name="SETTING_SITEMAP" translatable="true">发布您的网站</string>
<string name="SETTING_SITEMAP_INFO" translatable="true">将您的网站添加到我们的搜索引擎</string>
<item name="LaguageID" type="id"/> <item name="LaguageID" type="id"/>
<item name="LaguageRegion" type="id"/> <item name="LaguageRegion" type="id"/>

View File

@ -196,7 +196,8 @@
<!-- Alerts --> <!-- Alerts -->
<string name="ALERT_UPDATE_BRIDGES" translatable="true">Provide a Bridge I know</string> <string name="ALERT_UPDATE_BRIDGES" translatable="true">Provide a Bridge I know</string>
<string name="ALERT_UPDATE_BRIDGES_INFO" translatable="true">Enter bridge information from a trusted source</string> <string name="ALERT_UPDATE_BRIDGES_INFO" translatable="true">Enter bridge information from a trusted source</string>
<string name="ALERT_ADD_BRIDGES_HINT" translatable="true">bridge string ...</string> <string name="ALERT_ADD_BRIDGES_HINT" translatable="true">bridge string (obfs4 212.21.66.66:20621 ...)</string>
<string name="ALERT_ADD_BRIDGES_TYPE_HINT" translatable="true">bridge type (obfs4, meek, ...)</string>
<string name="ALERT_REQUEST_BRIDGE" translatable="true">Request</string> <string name="ALERT_REQUEST_BRIDGE" translatable="true">Request</string>
<string name="ALERT_SAVE_BRIDGE" translatable="true">Done</string> <string name="ALERT_SAVE_BRIDGE" translatable="true">Done</string>

View File

@ -26,6 +26,7 @@ import android.content.IntentFilter;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.database.Cursor; import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Color; import android.graphics.Color;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
@ -231,63 +232,72 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
@RequiresApi(api = Build.VERSION_CODES.O) @RequiresApi(api = Build.VERSION_CODES.O)
private void createNotificationChannel() { private void createNotificationChannel() {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if(orbotLocalConstants.mNotificationStatus==1) {
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence name = getString(R.string.app_name); // The user-visible name of the channel. CharSequence name = getString(R.string.app_name); // The user-visible name of the channel.
String description = getString(R.string.app_description); // The user-visible description of the channel. String description = getString(R.string.app_description); // The user-visible description of the channel.
NotificationChannel mChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, name, NotificationManager.IMPORTANCE_LOW); NotificationChannel mChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, name, NotificationManager.IMPORTANCE_LOW);
// Configure the notification channel. // Configure the notification channel.
mChannel.setDescription(description); mChannel.setDescription(description);
mChannel.enableLights(false); mChannel.enableLights(false);
mChannel.enableVibration(false); mChannel.enableVibration(false);
mChannel.setShowBadge(false); mChannel.setShowBadge(false);
mChannel.setLockscreenVisibility(Notification.VISIBILITY_SECRET); mChannel.setLockscreenVisibility(Notification.VISIBILITY_SECRET);
mNotificationManager.createNotificationChannel(mChannel); mNotificationManager.createNotificationChannel(mChannel);
}
} }
@SuppressLint({"NewApi", "RestrictedApi"}) @SuppressLint({"NewApi", "RestrictedApi"})
protected void showToolbarNotification(String notifyMsg, int notifyType, int icon) { protected void showToolbarNotification(String notifyMsg, int notifyType, int icon) {
PackageManager pm = getPackageManager(); //if(orbotLocalConstants.mNotificationStatus==1){
Intent intent = pm.getLaunchIntentForPackage(getPackageName()); PackageManager pm = getPackageManager();
PendingIntent pendIntent = PendingIntent.getActivity(OrbotService.this, 0, intent, 0); Intent intent = pm.getLaunchIntentForPackage(getPackageName());
PendingIntent pendIntent = PendingIntent.getActivity(OrbotService.this, 0, intent, 0);
if (mNotifyBuilder == null) { if (mNotifyBuilder == null) {
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotifyBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID) mNotifyBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
.setContentIntent(pendIntent) .setContentIntent(pendIntent)
.setCategory(Notification.CATEGORY_SERVICE) .setCategory(Notification.CATEGORY_SERVICE)
.setContentTitle("Genesis") .setContentTitle("Genesis")
.setColor(Color.parseColor("#84989f")) .setColor(Color.parseColor("#84989f"))
.setSmallIcon(R.drawable.ic_stat_tor_logo) .setSmallIcon(R.drawable.ic_stat_tor_logo)
.setOngoing(Prefs.persistNotifications()); .setOngoing(Prefs.persistNotifications());
} }
mNotifyBuilder.mActions.clear(); // clear out NEWNYM action mNotifyBuilder.mActions.clear(); // clear out NEWNYM action
if (conn != null) { // only add new identity action when there is a connection if (conn != null) { // only add new identity action when there is a connection
Intent intentRefresh = new Intent(CMD_NEWNYM); Intent intentRefresh = new Intent(CMD_NEWNYM);
PendingIntent pendingIntentNewNym = PendingIntent.getBroadcast(this, 0, intentRefresh, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent pendingIntentNewNym = PendingIntent.getBroadcast(this, 0, intentRefresh, PendingIntent.FLAG_UPDATE_CURRENT);
mNotifyBuilder.addAction(R.drawable.ic_refresh_white_24dp, getString(R.string.menu_new_identity), pendingIntentNewNym); mNotifyBuilder.addAction(R.drawable.ic_refresh_white_24dp, getString(R.string.menu_new_identity), pendingIntentNewNym);
} }
mNotifyBuilder.setContentText(notifyMsg) mNotifyBuilder.setContentText(notifyMsg)
.setSmallIcon(icon) .setSmallIcon(icon)
.setTicker(notifyType != NOTIFY_ID ? notifyMsg : null); .setTicker(notifyType != NOTIFY_ID ? notifyMsg : null);
if (!Prefs.persistNotifications()) if (!Prefs.persistNotifications())
mNotifyBuilder.setPriority(Notification.PRIORITY_LOW); mNotifyBuilder.setPriority(Notification.PRIORITY_LOW);
Notification notification = mNotifyBuilder.build(); Notification notification = mNotifyBuilder.build();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForeground(NOTIFY_ID, notification); startForeground(NOTIFY_ID, notification);
} else if (Prefs.persistNotifications() && (!mNotificationShowing)) { } else if (Prefs.persistNotifications() && (!mNotificationShowing)) {
startForeground(NOTIFY_ID, notification); startForeground(NOTIFY_ID, notification);
logNotice("Set background service to FOREGROUND"); logNotice("Set background service to FOREGROUND");
} else { } else {
mNotificationManager.notify(NOTIFY_ID, notification); mNotificationManager.notify(NOTIFY_ID, notification);
} }
mNotificationShowing = true; mNotificationShowing = true;
if(orbotLocalConstants.mNotificationStatus==0){
stopForeground(true);
}
//}else {
// disableNotification();
//}
} }
public int onStartCommand(Intent intent, int flags, int startId) { public int onStartCommand(Intent intent, int flags, int startId) {
@ -487,8 +497,10 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
mEventHandler = new TorEventHandler(this); mEventHandler = new TorEventHandler(this);
if (mNotificationManager == null) { if(orbotLocalConstants.mNotificationStatus==1) {
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); if (mNotificationManager == null) {
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
}
} }
IntentFilter mNetworkStateFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); IntentFilter mNetworkStateFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
@ -1622,11 +1634,27 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
Collections.shuffle(alBridges, bridgeSelectRandom); Collections.shuffle(alBridges, bridgeSelectRandom);
//let's just pull up to 2 bridges from the defaults at time
int maxBridges = 2; int maxBridges = 2;
int bridgeCount = 0; int bridgeCount = 0;
//now go through the list to find the bridges we want List<String> mList = Arrays.asList(orbotLocalConstants.mBridges.split("\n "));
if(orbotLocalConstants.mIsManualBridge){
alBridges.clear();
}
for(int e=0;e<mList.size();e++){
if(mList.get(e).length()<5){
continue;
}
List<String> mListTemp = Arrays.asList(mList.get(e).split(" "));
int mIndex = 0;
while(mListTemp.get(mIndex).length()<3){
mIndex+=1;
}
alBridges.add(new Bridge(mList.get(e).replace(mListTemp.get(mIndex),"") , orbotLocalConstants.mManualBridgeType));
}
for (Bridge b : alBridges) { for (Bridge b : alBridges) {
if (b.type.equals(type)) { if (b.type.equals(type)) {
extraLines.append("Bridge "); extraLines.append("Bridge ");
@ -1669,6 +1697,14 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
static class Bridge { static class Bridge {
String type; String type;
String config; String config;
public Bridge(String pConfig,String pType){
config = pConfig;
type = pType;
}
public Bridge(){
}
} }
private class IncomingIntentRouter implements Runnable { private class IncomingIntentRouter implements Runnable {
@ -1821,14 +1857,17 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
if(mNotificationManager!=null){ if(mNotificationManager!=null){
mNotificationManager.cancel(NOTIFY_ID); mNotificationManager.cancel(NOTIFY_ID);
stopForeground(true); stopForeground(true);
orbotLocalConstants.mNotificationStatus = 0;
} }
} }
public void enableTorNotificationNoBandwidth(){ public void enableTorNotificationNoBandwidth(){
orbotLocalConstants.mNotificationStatus = 1;
showToolbarNotification("Connected to the Tor network", HS_NOTIFY_ID, R.drawable.ic_stat_tor_logo); showToolbarNotification("Connected to the Tor network", HS_NOTIFY_ID, R.drawable.ic_stat_tor_logo);
} }
public void enableNotification(){ public void enableNotification(){
orbotLocalConstants.mNotificationStatus = 1;
showToolbarNotification(0+"kbps ⇣ / " +0+"kbps ⇡", HS_NOTIFY_ID, R.drawable.ic_stat_tor_logo); showToolbarNotification(0+"kbps ⇣ / " +0+"kbps ⇡", HS_NOTIFY_ID, R.drawable.ic_stat_tor_logo);
} }

View File

@ -4,6 +4,7 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import org.torproject.android.service.OrbotConstants; import org.torproject.android.service.OrbotConstants;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.util.Locale; import java.util.Locale;
@ -51,6 +52,24 @@ public class Prefs {
String defaultBridgeType = "obfs4"; String defaultBridgeType = "obfs4";
if (Locale.getDefault().getLanguage().equals("fa")) if (Locale.getDefault().getLanguage().equals("fa"))
defaultBridgeType = "meek"; //if Farsi, use meek as the default bridge type defaultBridgeType = "meek"; //if Farsi, use meek as the default bridge type
if(orbotLocalConstants.mIsManualBridge){
if(!orbotLocalConstants.mManualBridgeType.equals("")){
defaultBridgeType = orbotLocalConstants.mManualBridgeType;
putString(PREF_BRIDGES_LIST, defaultBridgeType);
return defaultBridgeType;
}
}else {
if(orbotLocalConstants.mBridges.equals("obfs4")){
defaultBridgeType = "obfs4";
putString(PREF_BRIDGES_LIST, defaultBridgeType);
return defaultBridgeType;
}else if(orbotLocalConstants.mBridges.equals("meek")){
defaultBridgeType = "meek";
putString(PREF_BRIDGES_LIST, defaultBridgeType);
return defaultBridgeType;
}
}
return prefs.getString(PREF_BRIDGES_LIST, defaultBridgeType); return prefs.getString(PREF_BRIDGES_LIST, defaultBridgeType);
} }

View File

@ -11,11 +11,11 @@ public class orbotLocalConstants
public static ArrayList<logRowModel> mTorLogsHistory = new ArrayList<>(); public static ArrayList<logRowModel> mTorLogsHistory = new ArrayList<>();
public static String mTorLogsStatus = "Loading..."; public static String mTorLogsStatus = "Loading...";
public static boolean mIsTorInitialized = false; public static boolean mIsTorInitialized = false;
public static String mCurrentStatus = "";
public static int mNotificationStatus = 0; public static int mNotificationStatus = 0;
public static WeakReference<Context> mHomeContext; public static WeakReference<Context> mHomeContext;
public static Intent mHomeIntent = null; public static Intent mHomeIntent = null;
public static String mBridges = ""; public static String mBridges = "";
public static boolean mIsManualBridge = false; public static boolean mIsManualBridge = false;
public static String mManualBridgeType = "";
public static boolean mNetworkState = true; public static boolean mNetworkState = true;
} }