LeOS-Genesis/app/src/main/java/com/darkweb/genesissearchengine/dataManager/tabDataModel.java

212 lines
7.4 KiB
Java
Raw Normal View History

2020-11-11 13:11:13 +01:00
package com.darkweb.genesissearchengine.dataManager;
import android.annotation.SuppressLint;
2020-12-11 08:05:08 +01:00
import android.content.ContentValues;
2020-11-27 12:40:46 +01:00
import android.graphics.Bitmap;
import android.os.Handler;
2020-12-11 08:05:08 +01:00
import com.darkweb.genesissearchengine.appManager.databaseManager.databaseController;
2020-11-11 13:11:13 +01:00
import com.darkweb.genesissearchengine.appManager.homeManager.geckoSession;
import com.darkweb.genesissearchengine.appManager.tabManager.tabRowModel;
2020-11-27 12:40:46 +01:00
import org.mozilla.geckoview.GeckoResult;
2020-12-11 08:05:08 +01:00
import java.io.ByteArrayOutputStream;
import java.text.SimpleDateFormat;
2020-11-11 13:11:13 +01:00
import java.util.ArrayList;
2020-12-11 08:05:08 +01:00
import java.util.Calendar;
2020-11-11 13:11:13 +01:00
import java.util.List;
2020-12-11 08:05:08 +01:00
import java.util.Locale;
2020-11-11 13:11:13 +01:00
@SuppressLint("CommitPrefEdits")
class tabDataModel
{
private ArrayList<tabRowModel> mTabs = new ArrayList<>();
2020-12-11 08:05:08 +01:00
ArrayList<tabRowModel> getTab(){
return mTabs;
}
2020-11-11 13:11:13 +01:00
/*List Tabs*/
2020-12-11 08:05:08 +01:00
void initializeTab(ArrayList<tabRowModel> pTabMdel){
mTabs.addAll(pTabMdel);
}
geckoSession getHomePage(){
for(int counter = 0; counter< mTabs.size(); counter++){
if(mTabs.get(counter).getSession().getCurrentURL().equals("https://boogle.store/")){
moveTabToTop(mTabs.get(counter).getSession());
return mTabs.get(0).getSession();
}
2020-11-11 13:11:13 +01:00
}
2020-12-11 08:05:08 +01:00
return null;
2020-11-11 13:11:13 +01:00
}
2020-12-11 08:05:08 +01:00
void addTabs(geckoSession mSession,boolean pIsDataSavable){
tabRowModel mTabModel = new tabRowModel(mSession);
mTabs.add(0,mTabModel);
if(mTabs.size()>20){
closeTab(mTabs.get(mTabs.size()-1).getSession());
}
if(pIsDataSavable){
String[] params = new String[2];
params[0] = mTabModel.getSession().getTitle();
params[1] = mTabModel.getSession().getCurrentURL();
String m_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH).format(Calendar.getInstance().getTime());
databaseController.getInstance().execSQL("INSERT INTO tab(mid,date,title,url) VALUES('"+ mTabModel.getmId() +"','" + m_date + "',?,?);",params);
}
2020-11-11 13:11:13 +01:00
}
2020-12-11 08:05:08 +01:00
2020-11-11 13:11:13 +01:00
void clearTab() {
int size = mTabs.size();
for(int counter = 0; counter< size; counter++){
mTabs.get(0).getSession().stop();
2020-12-24 09:55:18 +01:00
mTabs.get(0).getSession().closeSession();
2020-11-11 13:11:13 +01:00
mTabs.remove(0);
}
if(mTabs.size()>0){
mTabs.get(0).getSession().closeSession();
}
2020-12-11 08:05:08 +01:00
databaseController.getInstance().execSQL("DELETE FROM tab WHERE 1",null);
2020-12-24 09:55:18 +01:00
2020-11-11 13:11:13 +01:00
}
2020-12-11 08:05:08 +01:00
2020-11-11 13:11:13 +01:00
void closeTab(geckoSession mSession) {
for(int counter = 0; counter< mTabs.size(); counter++){
2020-12-11 08:05:08 +01:00
if(mTabs.get(counter).getSession().getSessionID().equals(mSession.getSessionID()))
2020-11-11 13:11:13 +01:00
{
2020-12-11 08:05:08 +01:00
databaseController.getInstance().execSQL("DELETE FROM tab WHERE mid='" + mTabs.get(counter).getmId() + "'",null);
2020-11-11 13:11:13 +01:00
mTabs.remove(counter);
break;
}
}
}
2020-12-11 08:05:08 +01:00
2020-11-11 13:11:13 +01:00
void moveTabToTop(geckoSession mSession) {
for(int counter = 0; counter< mTabs.size(); counter++){
2020-12-11 08:05:08 +01:00
if(mTabs.get(counter).getSession().getSessionID().equals(mSession.getSessionID()))
2020-11-11 13:11:13 +01:00
{
2020-12-11 08:05:08 +01:00
String m_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH).format(Calendar.getInstance().getTime());
databaseController.getInstance().execSQL("UPDATE tab SET date = '" + m_date + "' WHERE mid='"+mTabs.get(counter).getmId() + "'",null);
mTabs.add(0,mTabs.remove(counter));
2020-11-11 13:11:13 +01:00
break;
}
}
}
2020-12-11 08:05:08 +01:00
boolean updateTab(String mSessionID) {
for(int counter = 0; counter< mTabs.size(); counter++){
if(mTabs.get(counter).getSession().getSessionID().equals(mSessionID))
{
String[] params = new String[2];
params[0] = mTabs.get(counter).getSession().getTitle();
params[1] = mTabs.get(counter).getSession().getCurrentURL();
String m_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.ENGLISH).format(Calendar.getInstance().getTime());
databaseController.getInstance().execSQL("UPDATE tab SET date = '" + m_date + "' , url = ? , title = ? WHERE mid='"+mTabs.get(counter).getmId() + "'",params);
return true;
}
}
return false;
}
2020-11-11 13:11:13 +01:00
tabRowModel getCurrentTab(){
if(mTabs.size()>0){
return mTabs.get(0);
}
else {
return null;
}
}
2020-11-27 12:40:46 +01:00
2020-12-11 08:05:08 +01:00
tabRowModel getLastTab(){
if(mTabs.size()>0){
return mTabs.get(mTabs.size()-1);
}
else {
return null;
}
}
public void updatePixels(String pSessionID, GeckoResult<Bitmap> pBitmapManager){
2020-11-27 12:40:46 +01:00
for(int counter = 0; counter< mTabs.size(); counter++){
2020-12-11 08:05:08 +01:00
if(mTabs.get(counter).getSession().getSessionID().equals(pSessionID))
2020-11-27 12:40:46 +01:00
{
final Handler handler = new Handler();
int finalCounter = counter;
2020-12-11 08:05:08 +01:00
int finalCounter1 = counter;
2020-11-27 12:40:46 +01:00
handler.postDelayed(() ->
{
try {
Bitmap mBitmap = pBitmapManager.poll(0);
mTabs.get(finalCounter).setmBitmap(mBitmap);
2020-12-11 08:05:08 +01:00
ByteArrayOutputStream bos = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, bos);
byte[] mThumbnail = bos.toByteArray();
ContentValues mContentValues = new ContentValues();
mContentValues.put("mThumbnail", mThumbnail);
databaseController.getInstance().execTab("tab",mContentValues, mTabs.get(finalCounter1).getmId());
2020-11-27 12:40:46 +01:00
} catch (Throwable throwable) {
throwable.printStackTrace();
}
2020-12-24 09:55:18 +01:00
}, 500);
2020-11-27 12:40:46 +01:00
}
}
}
2020-11-11 13:11:13 +01:00
int getTotalTabs(){
return mTabs.size();
}
/*List Suggestion*/
public Object onTrigger(dataEnums.eTabCommands p_commands, List<Object> p_data){
if(p_commands == dataEnums.eTabCommands.GET_TOTAL_TAB){
return getTotalTabs();
}
else if(p_commands == dataEnums.eTabCommands.GET_CURRENT_TAB){
return getCurrentTab();
}
2020-12-11 08:05:08 +01:00
else if(p_commands == dataEnums.eTabCommands.GET_LAST_TAB){
return getLastTab();
}
2020-11-11 13:11:13 +01:00
else if(p_commands == dataEnums.eTabCommands.MOVE_TAB_TO_TOP){
moveTabToTop((geckoSession)p_data.get(0));
}
else if(p_commands == dataEnums.eTabCommands.CLOSE_TAB){
closeTab((geckoSession)p_data.get(0));
}
else if(p_commands == dataEnums.eTabCommands.M_CLEAR_TAB){
clearTab();
}
else if(p_commands == dataEnums.eTabCommands.M_ADD_TAB){
addTabs((geckoSession)p_data.get(0), (boolean)p_data.get(1));
}
2020-12-11 08:05:08 +01:00
else if(p_commands == dataEnums.eTabCommands.M_UPDATE_TAB){
updateTab((String) p_data.get(1));
}
2020-11-11 13:11:13 +01:00
else if(p_commands == dataEnums.eTabCommands.GET_TAB){
return getTab();
}
2020-11-27 12:40:46 +01:00
else if(p_commands == dataEnums.eTabCommands.M_UPDATE_PIXEL){
2020-12-11 08:05:08 +01:00
updatePixels((String)p_data.get(0), (GeckoResult<Bitmap>)p_data.get(1));
}
else if(p_commands == dataEnums.eTabCommands.M_HOME_PAGE){
return getHomePage();
2020-11-27 12:40:46 +01:00
}
2020-11-11 13:11:13 +01:00
return null;
}
}