From 4042488b569f9378f1d1e3bc0683c6f32342f908 Mon Sep 17 00:00:00 2001 From: Anthony Restaino Date: Fri, 6 Sep 2013 23:24:47 -0400 Subject: [PATCH] Assorted Bugfixes - Fixes tab location ability. - Improves browser stability - allow renaming of bookmarks - better objectification of the code - oh I can't remember, it's late and I'm tired --- res/anim/left.xml | 11 + res/anim/right.xml | 10 + res/drawable-xhdpi/ic_launcher.png | Bin 10584 -> 11431 bytes res/drawable-xhdpi/progress_bar.9.png | Bin 199 -> 176 bytes res/layout/two_line_autocomplete.xml | 4 +- res/values-zh-rCN/strings.xml | 4 +- .../barebones/activities/BrowserActivity.java | 1218 ++++++++--------- .../activities/IncognitoModeActivity.java | 1058 +++++++------- .../activities/SettingsActivity.java | 13 +- .../customwebview/CustomWebView.java | 228 ++- .../customwebview/IncognitoWebView.java | 232 +++- .../IncognitoChromeClient.java | 3 +- .../IncognitoLongClickListener.java | 2 +- .../barebones/utilities/FinalVariables.java | 1 + .../browser/barebones/utilities/Utils.java | 2 + .../webviewclasses/CustomChromeClient.java | 3 +- .../WebPageLongClickListener.java | 2 +- 17 files changed, 1513 insertions(+), 1278 deletions(-) create mode 100644 res/anim/left.xml create mode 100644 res/anim/right.xml diff --git a/res/anim/left.xml b/res/anim/left.xml new file mode 100644 index 0000000..11d3cf9 --- /dev/null +++ b/res/anim/left.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/res/anim/right.xml b/res/anim/right.xml new file mode 100644 index 0000000..6c3fbf0 --- /dev/null +++ b/res/anim/right.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png index 8a6168a7944b27f3bac6da2f95a8be0b4d0bcfa2..81a92c661d35d99f1eba642eafa5c267ceb1978f 100644 GIT binary patch literal 11431 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 B=jZ?c literal 10584 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 delta 152 zcmdnMc$`tOGr-TCmrII^fq{Y7)59eQNb>kv@z5TmGuSHna% z#RLO`FGUN1vd*3^jv*Ss$v^)8w`Ue;;80yYNDB9lqE%9VA0&NDFhGqwnrbDz8qG>*a3)z4*}Q$iB}8~iPR diff --git a/res/layout/two_line_autocomplete.xml b/res/layout/two_line_autocomplete.xml index 209ec3e..526dacd 100644 --- a/res/layout/two_line_autocomplete.xml +++ b/res/layout/two_line_autocomplete.xml @@ -16,7 +16,7 @@ android:textColor="#000000" android:textAppearance="?android:attr/textAppearanceMedium" android:paddingLeft="6dip" - android:paddingTop="10dip"/> + android:paddingTop="2dip"/> + android:paddingBottom="2dip"/> \ No newline at end of file diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index b67367d..bc61999 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -53,7 +53,5 @@ 新建标签 (没有检测到系统自带浏览器) (检测到系统自带浏览器) - 浏览网页时隐藏状态栏 - 清除 cookies - + \ No newline at end of file diff --git a/src/acr/browser/barebones/activities/BrowserActivity.java b/src/acr/browser/barebones/activities/BrowserActivity.java index d367499..8d9f675 100644 --- a/src/acr/browser/barebones/activities/BrowserActivity.java +++ b/src/acr/browser/barebones/activities/BrowserActivity.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import acr.browser.barebones.R; import acr.browser.barebones.customwebview.CustomWebView; @@ -23,7 +24,6 @@ import acr.browser.barebones.utilities.Utils; import acr.browser.barebones.webviewclasses.CustomChromeClient; import acr.browser.barebones.webviewclasses.CustomDownloadListener; import acr.browser.barebones.webviewclasses.CustomWebViewClient; -import acr.browser.barebones.webviewclasses.WebPageLongClickListener; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; @@ -74,12 +74,11 @@ import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebIconDatabase; import android.webkit.WebSettings; import android.webkit.WebSettings.LayoutAlgorithm; -import android.webkit.WebSettings.PluginState; -import android.webkit.WebSettings.RenderPriority; import android.webkit.WebView; import android.webkit.WebView.HitTestResult; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; +import android.widget.EditText; import android.widget.FrameLayout; import android.widget.HorizontalScrollView; import android.widget.ImageView; @@ -92,7 +91,6 @@ import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; -import android.widget.Toast; @SuppressWarnings("deprecation") public class BrowserActivity extends Activity implements OnTouchListener { @@ -124,13 +122,13 @@ public class BrowserActivity extends Activity implements OnTouchListener { } catch (IllegalStateException ignored) { } - list = new ArrayList>(); try { if (historyCursor != null) { if (historyCursor.moveToLast()) { // Variable for holding the retrieved URL - urlColumn = historyCursor.getColumnIndex("url"); - titleColumn = historyCursor.getColumnIndex("title"); + int urlColumn = historyCursor.getColumnIndex("url"); + int titleColumn = historyCursor + .getColumnIndex("title"); // Reference to the the column containing the URL int n = 0; do { @@ -164,7 +162,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { e.printStackTrace(); } if (uBar.isShown()) { - urlTitle[pageId].setText("History"); + currentTabTitle.setText("History"); setUrlText(""); getUrl.setPadding(tenPad, 0, tenPad, 0); } @@ -186,7 +184,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { } } - public static void removeView(WebView view) { + public static void removeView(CustomWebView view) { if (!showFullScreen) { view.startAnimation(fadeOut); } @@ -195,7 +193,80 @@ public class BrowserActivity extends Activity implements OnTouchListener { } private static BrowserActivity ACTIVITY; + + + private static int index = 0; + public static void renameBookmark(String url){ + index = 0; + for(int n = 0; n tabList; - public static SimpleAdapter adapter; + // variables + public static CustomWebView currentTab; + public static TextView currentTabTitle; public static MultiAutoCompleteTextView getUrl; - public static TextView[] urlTitle = new TextView[MAX_TABS]; + public static TextView[] urlTitle; public static ProgressBar browserProgress; - public static final CustomWebView[] main = new CustomWebView[MAX_TABS]; + public static CustomWebView[] main; public static Rect bounds; public static long timeTabPressed; + public static boolean fullScreen; public static int[] tabOrder = new int[MAX_TABS]; public static ValueCallback mUploadMessage; public static ImageView refresh; @@ -266,82 +345,61 @@ public class BrowserActivity extends Activity implements OnTouchListener { public static Drawable incognitoPage; public static Drawable exitTab; public static long loadTime = 0; - public static int number; - public static int pageId = 0; - public static int agentPicker; - public static int enableFlash; + public static int currentId = 0; public static int height32; public static int height; public static int width; public static int pixels; public static int leftPad; public static int rightPad; - public static final int API = FinalVariables.API; - public static int mShortAnimationDuration; public static int id; public static int tenPad; - public static int urlColumn; - public static int titleColumn; - public static int closeWindow; public static boolean isPhone = false; - public static boolean allowLocation; - public static boolean savePasswords; - public static boolean deleteHistory; - public static boolean saveTabs; - public static boolean showFullScreen; + public static boolean showFullScreen = false; public static boolean noStockBrowser = true; public static SharedPreferences settings; public static SharedPreferences.Editor edit; - public static String desktop; - public static String mobile; public static String user; - public static String urlA; - public static String title; - public static String[] memoryURL = new String[MAX_TABS]; - public static String[] bUrl = new String[MAX_BOOKMARKS]; - public static String[] bTitle = new String[MAX_BOOKMARKS]; + public static String[] memoryURL; + public static String[] bUrl; + public static String[] bTitle; public static String[] columns; public static String homepage; - public static final String preferences = "settings"; - - public static String[][] urlToLoad = new String[MAX_TABS][2]; + public static String[][] urlToLoad; public static FrameLayout background; public static RelativeLayout uBar; + public static RelativeLayout screen; public static HorizontalScrollView tabScroll; public static Animation slideUp; public static Animation slideDown; public static Animation fadeOut; public static Animation fadeIn; - public static CookieManager cookieManager; - public static Uri bookmarks; - public static List> list; - public static Map map; - public static Handler handler, browserHandler; - public static DatabaseHandler historyHandler; - - public static StringBuilder sb; - - public static Runnable update; - - public static SQLiteDatabase s; - public static Drawable inactive; - public static Drawable active; - public static LinearLayout tabLayout; - public static String[] GetArray(String input) { - return input.split("\\|\\$\\|SEPARATOR\\|\\$\\|"); + public static String[] getArray(String input) { + return input.split(SEPARATOR); + } + + public static int newId() { + + Random n = new Random(); + int id = n.nextInt(); + + while (tabList.contains(id)) { + id = n.nextInt(); + } + return id; } @SuppressWarnings("unused") public static void setFavicon(int id, Bitmap favicon) { - Drawable icon = null; + Drawable icon; icon = new BitmapDrawable(null, favicon); icon.setBounds(0, 0, width / 2, height / 2); if (icon != null) { @@ -350,104 +408,6 @@ public class BrowserActivity extends Activity implements OnTouchListener { urlTitle[id] .setCompoundDrawables(webpageOther, null, exitTab, null); } - icon = null; - - } - - @SuppressLint("SetJavaScriptEnabled") - public static void browserSettings(Context context, CustomWebView view) { - WebSettings webViewSettings = view.getSettings(); - if (settings.getBoolean("java", true)) { - webViewSettings.setJavaScriptEnabled(true); - webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true); - } - - if (API < 14) { - switch (settings.getInt("textsize", 3)) { - case 1: - webViewSettings.setTextSize(WebSettings.TextSize.LARGEST); - break; - case 2: - webViewSettings.setTextSize(WebSettings.TextSize.LARGER); - break; - case 3: - webViewSettings.setTextSize(WebSettings.TextSize.NORMAL); - break; - case 4: - webViewSettings.setTextSize(WebSettings.TextSize.SMALLER); - break; - case 5: - webViewSettings.setTextSize(WebSettings.TextSize.SMALLEST); - break; - } - - } else { - switch (settings.getInt("textsize", 3)) { - case 1: - webViewSettings.setTextZoom(200); - break; - case 2: - webViewSettings.setTextZoom(150); - break; - case 3: - webViewSettings.setTextZoom(100); - break; - case 4: - webViewSettings.setTextZoom(75); - break; - case 5: - webViewSettings.setTextZoom(50); - break; - } - } - webViewSettings.setSupportMultipleWindows(settings.getBoolean( - "newwindow", true)); - - switch (settings.getInt("enableflash", 0)) { - case 0: - break; - case 1: { - webViewSettings.setPluginState(PluginState.ON_DEMAND); - break; - } - case 2: { - webViewSettings.setPluginState(PluginState.ON); - break; - } - default: - break; - } - if (settings.getBoolean("passwords", false)) { - if (API < 18) { - webViewSettings.setSavePassword(true); - } - webViewSettings.setSaveFormData(true); - } - if (API < 18) { - try { - webViewSettings.setRenderPriority(RenderPriority.HIGH); - } catch (SecurityException ignored) { - - } - } - webViewSettings.setGeolocationEnabled(settings.getBoolean("location", - false)); - webViewSettings.setGeolocationDatabasePath(context.getFilesDir() - .getAbsolutePath()); - webViewSettings.setUseWideViewPort(settings.getBoolean("wideviewport", - true)); - webViewSettings.setLoadWithOverviewMode(settings.getBoolean( - "overviewmode", true)); - - if (settings.getBoolean("textreflow", false)) { - webViewSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); - } else { - webViewSettings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL); - } - - webViewSettings.setBlockNetworkImage(settings.getBoolean("blockimages", - false)); - webViewSettings.setLoadsImagesAutomatically(true); } @@ -473,7 +433,15 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public void onAnimationEnd(Animation animation) { - urlTitle[del].setVisibility(View.GONE); + // urlTitle[del].setVisibility(View.GONE); + tabLayout.post(new Runnable() { + + @Override + public void run() { + tabLayout.removeView(urlTitle[del]); + } + + }); findNewView(del); main[del] = null; } @@ -492,15 +460,17 @@ public class BrowserActivity extends Activity implements OnTouchListener { } void findNewView(int id) { + int delete = tabList.indexOf(id); int leftId = id; boolean right = false, left = false; - if (id == pageId) { + if (id == currentId) { if (main[id].isShown()) { - // background.removeView(main[id]); removeView(main[id]); } - for (; id <= (number - 1); id++) { + + if (tabList.size() > delete + 1) { + id = tabList.get(delete + 1); if (urlTitle[id].isShown()) { background.addView(main[id]); main[id].setVisibility(View.VISIBLE); @@ -511,8 +481,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { urlTitle[id].setBackground(active); } urlTitle[id].setPadding(leftPad, 0, rightPad, 0); - pageId = id; - setUrlText(urlToLoad[pageId][0]); + currentId = id; + currentTab = main[id]; + currentTabTitle = urlTitle[id]; + setUrlText(urlToLoad[currentId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); right = true; if (main[id].getProgress() < 100) { @@ -524,13 +496,13 @@ public class BrowserActivity extends Activity implements OnTouchListener { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); } - break; + // break; } } if (!right) { - for (; leftId >= 0; leftId--) { - + if (delete > 0) { + leftId = tabList.get(delete - 1); if (urlTitle[leftId].isShown()) { background.addView(main[leftId]); main[leftId].setVisibility(View.VISIBLE); @@ -541,20 +513,24 @@ public class BrowserActivity extends Activity implements OnTouchListener { urlTitle[leftId].setBackground(active); } urlTitle[leftId].setPadding(leftPad, 0, rightPad, 0); - pageId = leftId; - setUrlText(urlToLoad[pageId][0]); + currentId = leftId; + currentTab = main[leftId]; + currentTabTitle = urlTitle[leftId]; + setUrlText(urlToLoad[currentId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); left = true; if (main[leftId].getProgress() < 100) { refresh.setVisibility(View.INVISIBLE); progressBar.setVisibility(View.VISIBLE); - onProgressChanged(leftId, main[leftId].getProgress()); + onProgressChanged(leftId, + main[leftId].getProgress()); } else { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); - onProgressChanged(leftId, main[leftId].getProgress()); + onProgressChanged(leftId, + main[leftId].getProgress()); } - break; + // break; } } @@ -564,18 +540,18 @@ public class BrowserActivity extends Activity implements OnTouchListener { } else { right = left = true; } - + tabList.remove(delete); if (!(right || left)) { finish(); } uBar.bringToFront(); - tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + tabScroll.smoothScrollTo(currentTabTitle.getLeft(), 0); } @Override public void onLowMemory() { for (int n = 0; n < MAX_TABS; n++) { - if (n != pageId && main[n] != null) { + if (n != currentId && main[n] != null) { main[n].freeMemory(); } } @@ -631,6 +607,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { getUrl.setPadding(tenPad, 0, tenPad, 0); getUrl.setBackgroundResource(R.drawable.book); getUrl.setPadding(tenPad, 0, tenPad, 0); + final List> list = new ArrayList>(); handler = new Handler() { @Override @@ -638,7 +615,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { switch (msg.what) { case 1: { - adapter = new SimpleAdapter(CONTEXT, list, + SimpleAdapter adapter = new SimpleAdapter(CONTEXT, list, R.layout.two_line_autocomplete, new String[] { "title", "url" }, new int[] { R.id.title, R.id.url }); @@ -699,7 +676,6 @@ public class BrowserActivity extends Activity implements OnTouchListener { } catch (IllegalStateException ignored) { } - list = new ArrayList>(); try { if (managedCursor != null) { @@ -707,13 +683,16 @@ public class BrowserActivity extends Activity implements OnTouchListener { // Variable for holding the retrieved URL - urlColumn = managedCursor.getColumnIndex("url"); - titleColumn = managedCursor.getColumnIndex("title"); + int urlColumn = managedCursor.getColumnIndex("url"); + int titleColumn = managedCursor + .getColumnIndex("title"); // Reference to the the column containing the URL do { - urlA = managedCursor.getString(urlColumn); - title = managedCursor.getString(titleColumn); - map = new HashMap(); + String urlA = managedCursor + .getString(urlColumn); + String title = managedCursor + .getString(titleColumn); + Map map = new HashMap(); map.put("title", title); map.put("url", urlA); list.add(map); @@ -777,10 +756,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public void onClick(View v) { - if (main[pageId].canGoBack()) { - main[pageId].goBack(); + if (currentTab.canGoBack()) { + currentTab.goBack(); } else { - deleteTab(pageId); + deleteTab(currentId); } } @@ -801,9 +780,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public void finish() { background.clearDisappearingChildren(); + background.removeView(currentTab); tabScroll.clearDisappearingChildren(); if (settings.getBoolean("cache", false)) { - main[pageId].clearCache(true); + currentTab.clearCache(true); Log.i("Lightning", "Cache Cleared"); } super.finish(); @@ -820,8 +800,8 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public void onClick(View v) { - if (main[pageId].canGoForward()) { - main[pageId].goForward(); + if (currentTab.canGoForward()) { + currentTab.goForward(); } } @@ -854,6 +834,13 @@ public class BrowserActivity extends Activity implements OnTouchListener { @SuppressLint("InlinedApi") private void initialize() { + tabList = new ArrayList(); + bUrl = new String[MAX_BOOKMARKS]; + bTitle = new String[MAX_BOOKMARKS]; + main = new CustomWebView[MAX_TABS]; + urlTitle = new TextView[MAX_TABS]; + urlToLoad = new String[MAX_TABS][2]; + fullScreen = false; DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); historyHandler = new DatabaseHandler(this); @@ -875,7 +862,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { showFullScreen = settings.getBoolean("fullscreen", false); uBar = (RelativeLayout) findViewById(R.id.urlBar); - RelativeLayout bg = (RelativeLayout) findViewById(R.id.background); + screen = (RelativeLayout) findViewById(R.id.background); slideUp = AnimationUtils.loadAnimation(this, R.anim.slide_up); slideDown = AnimationUtils.loadAnimation(this, R.anim.slide_down); fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out); @@ -883,12 +870,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { fadeIn = AnimationUtils.loadAnimation(this, android.R.anim.fade_in); // mShortAnimationDuration = getResources().getInteger( // android.R.integer.config_mediumAnimTime); - mShortAnimationDuration = 250; slideUp.setAnimationListener(new AnimationListener() { @Override public void onAnimationEnd(Animation arg0) { - uBar.setVisibility(View.GONE); } @@ -917,7 +902,6 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public void onAnimationStart(Animation animation) { - uBar.setVisibility(View.VISIBLE); } @@ -936,10 +920,6 @@ public class BrowserActivity extends Activity implements OnTouchListener { background = (FrameLayout) findViewById(R.id.holder); defaultUser = user; // setting mobile user // agent - mobile = FinalVariables.MOBILE_USER_AGENT; - desktop = FinalVariables.DESKTOP_USER_AGENT; // setting - // desktop user agent - switch (settings.getInt("search", 1)) { case 1: SEARCH = FinalVariables.GOOGLE_SEARCH; @@ -962,6 +942,9 @@ public class BrowserActivity extends Activity implements OnTouchListener { case 7: SEARCH = FinalVariables.YANDEX_SEARCH; break; + case 8: + SEARCH = FinalVariables.DUCK_LITE_SEARCH; + break; } exitTab = getResources().getDrawable(R.drawable.stop); // user @@ -971,23 +954,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { // stored // homepage // variable - allowLocation = settings.getBoolean("location", false); // initializing - // location - // variable - savePasswords = settings.getBoolean("passwords", false); // initializing - // save - // passwords - // variable - enableFlash = settings.getInt("enableflash", 0); // enable flash - // boolean - agentPicker = settings.getInt("agentchoose", 1); // which user agent to - // use, 1=mobile, - // 2=desktop, - // 3=custom - - deleteHistory = settings.getBoolean("history", false); // delete history - // on exit - // boolean + // initializing variables declared height = getResources().getDrawable(R.drawable.loading) @@ -1022,7 +989,6 @@ public class BrowserActivity extends Activity implements OnTouchListener { rightPad = (int) (15 * scale + 0.5f); height32 = (int) (32 * scale + 0.5f); tenPad = (int) (10 * scale + 0.5f); - number = 0; webpageOther = getResources().getDrawable(R.drawable.webpage); incognitoPage = getResources().getDrawable(R.drawable.incognito); @@ -1046,11 +1012,11 @@ public class BrowserActivity extends Activity implements OnTouchListener { newTab.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - newTab(number, homepage, true); + newTab(homepage, true); tabScroll.postDelayed(new Runnable() { @Override public void run() { - tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + tabScroll.smoothScrollTo(currentTabTitle.getLeft(), 0); } }, 100L); @@ -1061,14 +1027,14 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public boolean onLongClick(View v) { if (settings.getString("oldPage", "").length() > 0) { - newTab(number, settings.getString("oldPage", ""), true); + newTab(settings.getString("oldPage", ""), true); edit.putString("oldPage", ""); edit.commit(); tabScroll.postDelayed(new Runnable() { @Override public void run() { - tabScroll.smoothScrollTo( - urlTitle[pageId].getLeft(), 0); + tabScroll.smoothScrollTo(currentTabTitle.getLeft(), + 0); } }, 100L); } @@ -1082,10 +1048,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public void onClick(View arg0) { - if (main[pageId].getProgress() < 100) { - main[pageId].stopLoading(); + if (currentTab.getProgress() < 100) { + currentTab.stopLoading(); } else { - main[pageId].reload(); + currentTab.reload(); } } @@ -1093,8 +1059,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { enterUrl(); if (showFullScreen) { - bg.removeView(uBar); - background.addView(uBar); + toggleFullScreen(); } browserHandler = new Handle(); @@ -1106,7 +1071,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { public void handleMessage(Message msg) { switch (msg.what) { case 1: { - main[pageId].loadUrl(getUrl.getText().toString()); + currentTab.loadUrl(getUrl.getText().toString()); break; } case 2: { @@ -1114,7 +1079,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { break; } case 3: { - main[pageId].invalidate(); + currentTab.invalidate(); break; } } @@ -1128,27 +1093,28 @@ public class BrowserActivity extends Activity implements OnTouchListener { String URL = url.getDataString(); boolean oldTabs = false; - if (saveTabs) { + if (settings.getBoolean("savetabs", true)) { if (URL != null) { // opens a new tab with the url if its there - newTab(number, URL, true); - main[number - 1].resumeTimers(); + int n = newTab(URL, true); + main[n].resumeTimers(); oldTabs = true; } + boolean first = false; for (String aMemoryURL : memoryURL) { if (aMemoryURL.length() > 0) { - if (number == 0) { - newTab(number, "", !oldTabs); - main[pageId].resumeTimers(); - main[pageId].getSettings().setCacheMode( + if (!first) { + int n = newTab("", !oldTabs); + main[n].resumeTimers(); + main[n].getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK); - main[pageId].loadUrl(aMemoryURL); + main[n].loadUrl(aMemoryURL); } else { - newTab(number, "", false); - main[number - 1].getSettings().setCacheMode( + int n = newTab("", false); + main[n].getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK); - main[number - 1].loadUrl(aMemoryURL); + main[n].loadUrl(aMemoryURL); } oldTabs = true; } @@ -1156,59 +1122,43 @@ public class BrowserActivity extends Activity implements OnTouchListener { } if (!oldTabs) { - newTab(number, homepage, true); - main[number - 1].resumeTimers(); + int n = newTab(homepage, true); + main[n].resumeTimers(); } } else { if (URL != null) { // opens a new tab with the URL if its there - newTab(number, URL, true); - main[number - 1].resumeTimers(); + int n = newTab(URL, true); + main[n].resumeTimers(); } else { // otherwise it opens the home-page - newTab(number, homepage, true); - main[number - 1].resumeTimers(); + int n = newTab(homepage, true); + main[n].resumeTimers(); } } } - public static CustomWebView makeTab(final int pageToView, String Url, + public static CustomWebView generateTab(final int pageToView, String Url, final boolean display) { CustomWebView view = new CustomWebView(CONTEXT); view.setId(pageToView); - allowLocation = settings.getBoolean("location", false); - browserSettings(CONTEXT, view); view.setWebViewClient(new CustomWebViewClient(ACTIVITY)); view.setWebChromeClient(new CustomChromeClient(ACTIVITY)); if (API > 8) { view.setDownloadListener(new CustomDownloadListener(ACTIVITY)); } - view.setOnLongClickListener(new WebPageLongClickListener()); - - agentPicker = settings.getInt("agentchoose", 1); - switch (agentPicker) { - case 1: - view.getSettings().setUserAgentString(defaultUser); - break; - case 2: - view.getSettings().setUserAgentString(desktop); - break; - case 3: - view.getSettings().setUserAgentString(mobile); - break; - case 4: - view.getSettings().setUserAgentString( - settings.getString("userAgentString", defaultUser)); - break; - } if (display) { - background.removeView(main[pageId]); + if (currentId != -1) { + background.removeView(currentTab); + } background.addView(view); view.requestFocus(); - pageId = pageToView; + currentId = pageToView; + currentTab = main[pageToView]; + currentTabTitle = urlTitle[pageToView]; } uBar.bringToFront(); if (Url.contains("about:home")) { @@ -1231,159 +1181,106 @@ public class BrowserActivity extends Activity implements OnTouchListener { } // new tab method, takes the id of the tab to be created and the url to load - public static int newTab(int theId, final String theUrl, - final boolean display) { + public static int newTab(final String theUrl, final boolean display) { Log.i("Browser", "making tab"); - int finalID = 0; homepage = settings.getString("home", HOMEPAGE); - allowLocation = settings.getBoolean("location", false); - boolean reuseWebView = false; - - for (int num = 0; num < number; num++) { - if (urlTitle[num].getVisibility() == View.GONE) { - final int n = num; - Animation holo = AnimationUtils.loadAnimation(CONTEXT, - R.anim.up); - holo.setAnimationListener(new AnimationListener() { - - @Override - public void onAnimationEnd(Animation animation) { - } - - @Override - public void onAnimationRepeat(Animation animation) { - } - - @Override - public void onAnimationStart(Animation animation) { - urlTitle[n].setVisibility(View.VISIBLE); - } - - }); - urlTitle[n].startAnimation(holo); - urlTitle[num].setText("New Tab"); - - if (display) { - if (API < 16) { - urlTitle[num].setBackgroundDrawable(active); - } else { - urlTitle[num].setBackground(active); - } - } else { - if (API < 16) { - urlTitle[num].setBackgroundDrawable(inactive); - } else { - urlTitle[num].setBackground(inactive); - } - } - urlTitle[num].setPadding(leftPad, 0, rightPad, 0); - if (display) { - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(inactive); - } else { - urlTitle[pageId].setBackground(inactive); - } - } - urlTitle[num].setCompoundDrawables(webpageOther, null, exitTab, - null); - urlTitle[num].setPadding(leftPad, 0, rightPad, 0); - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - - main[num] = makeTab(num, theUrl, display); - finalID = num; - pageId = num; - - uBar.bringToFront(); + int finalID = createTab(theUrl, display); + if (finalID != -1) { + tabList.add(finalID); + if (display) { + currentId = finalID; + currentTab = main[finalID]; + currentTabTitle = urlTitle[finalID]; + } - if (API >= 11) { - main[num].onResume(); - } + return finalID; + } else { + return 0; + } + } - reuseWebView = true; + // creates the tab and returns the ID of the view + public static int createTab(String theUrl, boolean display) { + int id = -1; + for (int n = 0; n < MAX_TABS; n++) { + if (main[n] == null) { + id = n; break; } } - if (!reuseWebView) { - if (number < MAX_TABS) { - if (number > 0) { - if (display) { - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(inactive); - } else { - urlTitle[pageId].setBackground(inactive); - } - - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - } - } - final TextView title = new TextView(CONTEXT); - title.setText("New Tab"); + if (id != -1) { + if (id > 0) { if (display) { if (API < 16) { - title.setBackgroundDrawable(active); + currentTabTitle.setBackgroundDrawable(inactive); } else { - title.setBackground(active); + currentTabTitle.setBackground(inactive); } + currentTabTitle.setPadding(leftPad, 0, rightPad, 0); + } + } + final TextView title = new TextView(CONTEXT); + title.setText("New Tab"); + if (display) { + if (API < 16) { + title.setBackgroundDrawable(active); } else { - if (API < 16) { - title.setBackgroundDrawable(inactive); - } else { - title.setBackground(inactive); - } + title.setBackground(active); } - title.setSingleLine(true); - title.setGravity(Gravity.CENTER_VERTICAL); - title.setHeight(height32); - title.setWidth(pixels); - title.setPadding(leftPad, 0, rightPad, 0); - title.setId(number); - title.setGravity(Gravity.CENTER_VERTICAL); - - title.setCompoundDrawables(webpageOther, null, exitTab, null); - - Drawable[] drawables = title.getCompoundDrawables(); - bounds = drawables[2].getBounds(); - title.setOnTouchListener(ACTIVITY); - Animation holo = AnimationUtils.loadAnimation(CONTEXT, - R.anim.up); - tabLayout.addView(title); - title.setVisibility(View.INVISIBLE); - holo.setAnimationListener(new AnimationListener() { + } else { + if (API < 16) { + title.setBackgroundDrawable(inactive); + } else { + title.setBackground(inactive); + } + } + title.setSingleLine(true); + title.setGravity(Gravity.CENTER_VERTICAL); + title.setHeight(height32); + title.setWidth(pixels); + title.setPadding(leftPad, 0, rightPad, 0); + title.setId(id); + title.setGravity(Gravity.CENTER_VERTICAL); + + title.setCompoundDrawables(webpageOther, null, exitTab, null); + + Drawable[] drawables = title.getCompoundDrawables(); + bounds = drawables[2].getBounds(); + title.setOnTouchListener(ACTIVITY); + Animation holo = AnimationUtils.loadAnimation(CONTEXT, R.anim.up); + tabLayout.addView(title); + title.setVisibility(View.INVISIBLE); + holo.setAnimationListener(new AnimationListener() { - @Override - public void onAnimationEnd(Animation animation) { - } + @Override + public void onAnimationEnd(Animation animation) { + } - @Override - public void onAnimationRepeat(Animation animation) { - } + @Override + public void onAnimationRepeat(Animation animation) { + } - @Override - public void onAnimationStart(Animation animation) { - title.setVisibility(View.VISIBLE); - } + @Override + public void onAnimationStart(Animation animation) { + title.setVisibility(View.VISIBLE); + } - }); - title.startAnimation(holo); - urlTitle[number] = title; + }); + title.startAnimation(holo); + urlTitle[id] = title; - urlTitle[number].setText("New Tab"); + urlTitle[id].setText("New Tab"); - if (theUrl != null) { - main[number] = makeTab(number, theUrl, display); - } else { - main[number] = makeTab(number, homepage, display); - } - finalID = number; - number = number + 1; + if (theUrl != null) { + main[id] = generateTab(id, theUrl, display); + } else { + main[id] = generateTab(id, homepage, display); } - } - if (!reuseWebView && number >= MAX_TABS) { - Toast.makeText(CONTEXT, "Maximum number of tabs reached...", - Toast.LENGTH_SHORT).show(); - } - return finalID; + } else { + Utils.showToast(CONTEXT, "Max number of tabs reached"); + } + return id; } @Override @@ -1406,10 +1303,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { if (showFullScreen && !uBar.isShown()) { uBar.startAnimation(slideDown); } - if (main[pageId].isShown() && main[pageId].canGoBack()) { - main[pageId].goBack(); + if (currentTab.isShown() && currentTab.canGoBack()) { + currentTab.goBack(); } else { - deleteTab(pageId); + deleteTab(currentId); uBar.bringToFront(); } } catch (NullPointerException ignored) { @@ -1421,11 +1318,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (settings.getBoolean("textreflow", false)) { - main[pageId].getSettings().setLayoutAlgorithm( + currentTab.getSettings().setLayoutAlgorithm( LayoutAlgorithm.NARROW_COLUMNS); } else { - main[pageId].getSettings().setLayoutAlgorithm( - LayoutAlgorithm.NORMAL); + currentTab.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); } } @@ -1436,18 +1332,18 @@ public class BrowserActivity extends Activity implements OnTouchListener { setContentView(R.layout.activity_main); // displays main xml layout CONTEXT = this; ACTIVITY = this; - settings = getSharedPreferences(preferences, 0); + settings = getSharedPreferences("settings", 0); edit = settings.edit(); if (settings.getBoolean("hidestatus", false)) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } - saveTabs = settings.getBoolean("savetabs", true); - if (saveTabs) { + if (settings.getBoolean("savetabs", true)) { String mem = settings.getString("memory", ""); edit.putString("memory", ""); - memoryURL = GetArray(mem); + memoryURL = new String[MAX_TABS]; + memoryURL = getArray(mem); } inactive = getResources().getDrawable(R.drawable.bg_inactive); @@ -1472,13 +1368,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { String message = "1. Long-press back button to exit browser\n\n" + "2. Swipe from left edge toward the right (---->) to go back\n\n" + "3. Swipe from right edge toward the left (<----)to go forward\n\n" - + "4. Visit settings and advanced settings to change options"; + + "4. Visit settings and advanced settings to change options\n\n" + + "5. Long-press on the new tab button to open the last closed tab"; Utils.createInformativeDialog(CONTEXT, "Browser Tips", message); - String sorry = "I have changed back to the old icon because it has been" - + " brought to my attention that another app had a very similar icon to the new one." - + " I apologize if you liked the new one."; - Utils.createInformativeDialog(CONTEXT, "New Icon", sorry); edit.putInt("first", 1); edit.commit(); } @@ -1501,10 +1394,45 @@ public class BrowserActivity extends Activity implements OnTouchListener { */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_SEARCH) { + switch (keyCode) { + case KeyEvent.KEYCODE_SEARCH: { getUrl.requestFocus(); InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); manager.showSoftInput(getUrl, 0); + + break; + } + case KeyEvent.KEYCODE_F5: { + currentTab.reload(); + } + case KeyEvent.KEYCODE_ESCAPE: { + currentTab.stopLoading(); + } + case KeyEvent.KEYCODE_TAB: { + InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (!manager.isActive()) { + newTab(homepage, true); + } + + } + case KeyEvent.KEYCODE_F12: { + finish(); + } + case KeyEvent.KEYCODE_F6: { + getUrl.selectAll(); + } + case KeyEvent.KEYCODE_F10: { + startActivity(new Intent(FinalVariables.SETTINGS_INTENT)); + } + case KeyEvent.KEYCODE_F11: { + toggleFullScreen(); + } + case KeyEvent.KEYCODE_DEL: { + InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if (!manager.isActive()) { + currentTab.goBack(); + } + } } return super.onKeyDown(keyCode, event); } @@ -1546,7 +1474,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { } else if (download == 1) { Utils.downloadFile(CONTEXT, url, null, null); } else if (url != null) { - newTab(number, url, true); + newTab(url, true); } super.onNewIntent(intent); @@ -1557,13 +1485,13 @@ public class BrowserActivity extends Activity implements OnTouchListener { switch (item.getItemId()) { case R.id.history: - generateHistory(main[pageId], CONTEXT); + generateHistory(currentTab, CONTEXT); return true; case R.id.bookmark: - if (urlToLoad[pageId][1] != null) { - if (!urlToLoad[pageId][1].equals("Bookmarks")) { - Utils.addBookmark(CONTEXT, urlToLoad[pageId][1], - urlToLoad[pageId][0]); + if (urlToLoad[currentId][1] != null) { + if (!urlToLoad[currentId][1].equals("Bookmarks")) { + Utils.addBookmark(CONTEXT, urlToLoad[currentId][1], + urlToLoad[currentId][0]); } } return true; @@ -1571,10 +1499,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { newSettings(); return true; case R.id.allBookmarks: - if (urlToLoad[pageId][1] == null) { - goBookmarks(CONTEXT, main[pageId]); - } else if (!urlToLoad[pageId][1].equals("Bookmarks")) { - goBookmarks(CONTEXT, main[pageId]); + if (urlToLoad[currentId][1] == null) { + goBookmarks(CONTEXT, currentTab); + } else if (!urlToLoad[currentId][1].equals("Bookmarks")) { + goBookmarks(CONTEXT, currentTab); } return true; @@ -1593,11 +1521,11 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override protected void onPause() { - if (main[pageId] != null) { + if (currentTab != null) { if (API >= 11) { - main[pageId].onPause(); + currentTab.onPause(); } - main[pageId].pauseTimers(); + currentTab.pauseTimers(); } Thread remember = new Thread(new Runnable() { @@ -1619,16 +1547,20 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override protected void onResume() { - onProgressChanged(pageId, main[pageId].getProgress()); - if (main[pageId].getProgress() == 100) { + onProgressChanged(currentId, currentTab.getProgress()); + if (currentTab.getProgress() == 100) { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); - + } if (API >= 11) { - main[pageId].onResume(); + currentTab.onResume(); + } + reinitializeSettings(); + currentTab.resumeTimers(); + if (settings.getBoolean("fullscreen", false) != fullScreen) { + toggleFullScreen(); } - main[pageId].resumeTimers(); super.onResume(); } @@ -1654,7 +1586,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { view.loadUrl("file://" + bookmarkWebPage); if (uBar.isShown()) { - urlTitle[pageId].setText("Bookmarks"); + currentTabTitle.setText("Bookmarks"); setUrlText(""); getUrl.setPadding(tenPad, 0, tenPad, 0); } @@ -1680,15 +1612,15 @@ public class BrowserActivity extends Activity implements OnTouchListener { switch (item.getItemId()) { case R.id.history: - generateHistory(main[pageId], CONTEXT); + generateHistory(currentTab, CONTEXT); return true; case R.id.bookmark: - if (urlToLoad[pageId][1] != null) { - if (!urlToLoad[pageId][1] + if (urlToLoad[currentId][1] != null) { + if (!urlToLoad[currentId][1] .equals("Bookmarks")) { Utils.addBookmark(CONTEXT, - urlToLoad[pageId][1], - urlToLoad[pageId][0]); + urlToLoad[currentId][1], + urlToLoad[currentId][0]); } } return true; @@ -1696,11 +1628,11 @@ public class BrowserActivity extends Activity implements OnTouchListener { newSettings(); return true; case R.id.allBookmarks: - if (urlToLoad[pageId][1] == null) { - goBookmarks(CONTEXT, main[pageId]); - } else if (!urlToLoad[pageId][1] + if (urlToLoad[currentId][1] == null) { + goBookmarks(CONTEXT, currentTab); + } else if (!urlToLoad[currentId][1] .equals("Bookmarks")) { - goBookmarks(CONTEXT, main[pageId]); + goBookmarks(CONTEXT, currentTab); } return true; case R.id.share: @@ -1726,14 +1658,6 @@ public class BrowserActivity extends Activity implements OnTouchListener { } }); - options.setOnLongClickListener(new OnLongClickListener() { - - @Override - public boolean onLongClick(View arg0) { - return true; - } - - }); } static void share() { @@ -1744,10 +1668,10 @@ public class BrowserActivity extends Activity implements OnTouchListener { // add a subject shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, - urlToLoad[pageId][1]); + urlToLoad[currentId][1]); // build the body of the message to be shared - String shareMessage = urlToLoad[pageId][0]; + String shareMessage = urlToLoad[currentId][0]; // add the message shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareMessage); @@ -1759,7 +1683,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { static void searchTheWeb(String query, Context context) { query = query.trim(); - main[pageId].stopLoading(); + currentTab.stopLoading(); if (query.startsWith("www.")) { query = "http://" + query; @@ -1777,16 +1701,16 @@ public class BrowserActivity extends Activity implements OnTouchListener { boolean isSearch = ((query.contains(" ") || !containsPeriod) && !aboutScheme); if (query.contains("about:home") || query.contains("about:bookmarks")) { - goBookmarks(context, main[pageId]); + goBookmarks(context, currentTab); } else if (query.contains("about:history")) { - generateHistory(main[pageId], context); + generateHistory(currentTab, context); } else if (isSearch) { query.replaceAll(" ", "+"); - main[pageId].loadUrl(SEARCH + query); + currentTab.loadUrl(SEARCH + query); } else if (!validURL) { - main[pageId].loadUrl("http://" + query); + currentTab.loadUrl("http://" + query); } else { - main[pageId].loadUrl(query); + currentTab.loadUrl(query); } } @@ -1839,20 +1763,20 @@ public class BrowserActivity extends Activity implements OnTouchListener { } public static void onCreateWindow(Message resultMsg) { - newTab(number, "", true); + newTab("", true); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; - transport.setWebView(main[pageId]); + transport.setWebView(currentTab); resultMsg.sendToTarget(); browserHandler.postDelayed(new Runnable() { @Override public void run() { - main[pageId].loadUrl(getUrl.getText().toString()); + currentTab.loadUrl(getUrl.getText().toString()); } }, 500); } public static void onShowCustomView() { - background.removeView(main[pageId]); + background.removeView(currentTab); uBar.setVisibility(View.GONE); } @@ -1863,7 +1787,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { fullScreenContainer = null; mCustomViewCallback.onCustomViewHidden(); ACTIVITY.setRequestedOrientation(orientation); - background.addView(main[pageId]); + background.addView(currentTab); uBar.setVisibility(View.VISIBLE); uBar.bringToFront(); } @@ -1888,91 +1812,97 @@ public class BrowserActivity extends Activity implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { - id = v.getId(); - background.clearDisappearingChildren(); - boolean xPress = false; - int x = (int) event.getX(); - int y = (int) event.getY(); - Rect edge = new Rect(); - v.getLocalVisibleRect(edge); - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - if (event.getAction() == MotionEvent.ACTION_DOWN) { - timeTabPressed = System.currentTimeMillis(); - } else if (event.getAction() == MotionEvent.ACTION_UP) { - - if ((System.currentTimeMillis() - timeTabPressed) > 1000) { - xPress = true; - } + try { + id = v.getId(); + background.clearDisappearingChildren(); + boolean xPress = false; + int x = (int) event.getX(); + int y = (int) event.getY(); + Rect edge = new Rect(); + v.getDrawingRect(edge); + currentTabTitle.setPadding(leftPad, 0, rightPad, 0); + if (event.getAction() == MotionEvent.ACTION_DOWN) { + timeTabPressed = System.currentTimeMillis(); + } else if (event.getAction() == MotionEvent.ACTION_UP) { + + if ((System.currentTimeMillis() - timeTabPressed) > 1000) { + xPress = true; + } - if (x >= (edge.right - bounds.width() - v.getPaddingRight() - 10 * 3 / 2) - && x <= (edge.right - v.getPaddingRight() + 10 * 3 / 2) - && y >= (v.getPaddingTop() - 10 / 2) - && y <= (v.getHeight() - v.getPaddingBottom() + 10 / 2)) { - xPress = true; - } - if (id == pageId) { - if (xPress) { - deleteTab(id); - uBar.bringToFront(); + if (x >= (edge.right - bounds.width() - v.getPaddingRight() - 10 * 3 / 2) + && x <= (edge.right - v.getPaddingRight() + 10 * 3 / 2) + && y >= (v.getPaddingTop() - 10 / 2) + && y <= (v.getHeight() - v.getPaddingBottom() + 10 / 2)) { + xPress = true; } - } else if (id != pageId) { - if (xPress) { - deleteTab(id); - } else { - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(inactive); - } else if (API > 15) { - urlTitle[pageId].setBackground(inactive); - } - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - if (!showFullScreen) { - background.addView(main[id]); - main[id].startAnimation(fadeIn); - main[pageId].startAnimation(fadeOut); - background.removeView(main[pageId]); + if (id == currentId) { + if (xPress) { + deleteTab(id); uBar.bringToFront(); - } else if (API >= 12) { - main[id].setAlpha(0f); - background.addView(main[id]); - try { - main[id].animate().alpha(1f) - .setDuration(mShortAnimationDuration); - } catch (NullPointerException ignored) { + } + } else if (id != currentId) { + if (xPress) { + deleteTab(id); + } else { + if (API < 16) { + currentTabTitle.setBackgroundDrawable(inactive); + } else if (API > 15) { + currentTabTitle.setBackground(inactive); + } + currentTabTitle.setPadding(leftPad, 0, rightPad, 0); + if (!showFullScreen) { + background.addView(main[id]); + main[id].startAnimation(fadeIn); + currentTab.startAnimation(fadeOut); + background.removeView(currentTab); + uBar.bringToFront(); + } else if (API >= 12) { + main[id].setAlpha(0f); + background.addView(main[id]); + try { + main[id].animate().alpha(1f).setDuration(250); + } catch (NullPointerException ignored) { + } + background.removeView(currentTab); + uBar.bringToFront(); + } else { + background.removeView(currentTab); + background.addView(main[id]); } - background.removeView(main[pageId]); uBar.bringToFront(); - } else { - background.removeView(main[pageId]); - background.addView(main[id]); - } - uBar.bringToFront(); - pageId = id; - setUrlText(urlToLoad[pageId][0]); - getUrl.setPadding(tenPad, 0, tenPad, 0); - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(active); - } else if (API > 15) { - urlTitle[pageId].setBackground(active); - } - if (main[pageId].getProgress() < 100) { - refresh.setVisibility(View.INVISIBLE); - - progressBar.setVisibility(View.VISIBLE); - - } else { - progressBar.setVisibility(View.GONE); - refresh.setVisibility(View.VISIBLE); + currentId = id; + currentTab = main[id]; + currentTabTitle = urlTitle[id]; + setUrlText(urlToLoad[currentId][0]); + getUrl.setPadding(tenPad, 0, tenPad, 0); + if (API < 16) { + currentTabTitle.setBackgroundDrawable(active); + } else if (API > 15) { + currentTabTitle.setBackground(active); + } + if (currentTab.getProgress() < 100) { + refresh.setVisibility(View.INVISIBLE); + + progressBar.setVisibility(View.VISIBLE); + + } else { + progressBar.setVisibility(View.GONE); + refresh.setVisibility(View.VISIBLE); + } + onProgressChanged(currentId, currentTab.getProgress()); + tabScroll.smoothScrollTo(currentTabTitle.getLeft(), 0); + currentTab.invalidate(); } - onProgressChanged(pageId, main[pageId].getProgress()); - tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); - main[pageId].invalidate(); } - } + } + uBar.bringToFront(); + v.setPadding(leftPad, 0, rightPad, 0); + } catch (Exception e) { + e.printStackTrace(); + Log.e("Lightning Error", "Well we dun messed up"); } - uBar.bringToFront(); - v.setPadding(leftPad, 0, rightPad, 0); return true; } @@ -1993,99 +1923,113 @@ public class BrowserActivity extends Activity implements OnTouchListener { } - public static boolean onLongClick(final int n) { - final HitTestResult result = main[n].getHitTestResult(); + public static boolean onLongClick() { + int n = currentId; + final HitTestResult result = currentTab.getHitTestResult(); - if (main[n].getUrl().contains( + if (currentTab.getUrl().contains( "file://" + CONTEXT.getFilesDir() + "/bookmarks.html")) { - Message message = new Message(); message.arg1 = n; message.setTarget(new ClickHandler()); - main[n].requestFocusNodeHref(message); + currentTab.requestFocusNodeHref(message); return true; - } else if (result.getExtra() != null) { - if (result.getType() == 5 && API > 8) { - DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, result.getExtra(), false); - // urlTitle[num].performClick(); - pageId = num; - break; - } - case DialogInterface.BUTTON_NEGATIVE: { - main[n].loadUrl(result.getExtra()); - break; - } - case DialogInterface.BUTTON_NEUTRAL: { - if (API > 8) { - String url = result.getExtra(); + } else if (result != null) { + if (result.getExtra() != null) { + if (result.getType() == 5 && API > 8) { + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = currentId; + newTab(result.getExtra(), false); + // urlTitle[num].performClick(); + currentId = num; + currentTab = main[num]; + currentTabTitle = urlTitle[num]; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + currentTab.loadUrl(result.getExtra()); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + if (API > 8) { + String url = result.getExtra(); - Utils.downloadFile(CONTEXT, url, null, null); + Utils.downloadFile(CONTEXT, url, null, null); + } + break; + } } - break; - } } - } - }; + }; + + AlertDialog.Builder builder = new AlertDialog.Builder( + CONTEXT); // dialog + builder.setMessage( + "What would you like to do with this image?") + .setPositiveButton("Open in New Tab", + dialogClickListener) + .setNegativeButton("Open Normally", + dialogClickListener) + .setNeutralButton("Download Image", + dialogClickListener).show(); - AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog - builder.setMessage("What would you like to do with this image?") - .setPositiveButton("Open in New Tab", - dialogClickListener) - .setNegativeButton("Open Normally", dialogClickListener) - .setNeutralButton("Download Image", dialogClickListener) - .show(); - - } else { - DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, result.getExtra(), false); - pageId = num; - break; - } - case DialogInterface.BUTTON_NEGATIVE: { - main[n].loadUrl(result.getExtra()); - break; - } - case DialogInterface.BUTTON_NEUTRAL: { - - if (API < 11) { - android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ACTIVITY - .getSystemService(Context.CLIPBOARD_SERVICE); - clipboard.setText(result.getExtra()); - } else { - ClipboardManager clipboard = (ClipboardManager) ACTIVITY - .getSystemService(CLIPBOARD_SERVICE); - ClipData clip = ClipData.newPlainText("label", - result.getExtra()); - clipboard.setPrimaryClip(clip); + } else { + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: { + int num = currentId; + newTab(result.getExtra(), false); + currentId = num; + currentTab = main[num]; + currentTabTitle = urlTitle[num]; + break; + } + case DialogInterface.BUTTON_NEGATIVE: { + currentTab.loadUrl(result.getExtra()); + break; + } + case DialogInterface.BUTTON_NEUTRAL: { + + if (API < 11) { + android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ACTIVITY + .getSystemService(Context.CLIPBOARD_SERVICE); + clipboard.setText(result.getExtra()); + } else { + ClipboardManager clipboard = (ClipboardManager) ACTIVITY + .getSystemService(CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText( + "label", result.getExtra()); + clipboard.setPrimaryClip(clip); + } + break; + } } - break; - } } - } - }; - - AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog - builder.setTitle(result.getExtra()).setMessage("What do you want to do with this link?") - .setPositiveButton("Open in New Tab", - dialogClickListener) - .setNegativeButton("Open Normally", dialogClickListener) - .setNeutralButton("Copy link", dialogClickListener) - .show(); + }; + + AlertDialog.Builder builder = new AlertDialog.Builder( + CONTEXT); // dialog + builder.setTitle(result.getExtra()) + .setMessage( + "What do you want to do with this link?") + .setPositiveButton("Open in New Tab", + dialogClickListener) + .setNegativeButton("Open Normally", + dialogClickListener) + .setNeutralButton("Copy link", dialogClickListener) + .show(); + } } return true; + } else { return false; } @@ -2100,9 +2044,7 @@ public class BrowserActivity extends Activity implements OnTouchListener { public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, clickedURL, false); - pageId = num; + renameBookmark(clickedURL); break; } case DialogInterface.BUTTON_NEGATIVE: { @@ -2119,26 +2061,31 @@ public class BrowserActivity extends Activity implements OnTouchListener { AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog builder.setMessage("What would you like to do with this bookmark?") - .setPositiveButton("Open in New Tab", dialogClickListener) - .setNegativeButton("Open Normally", dialogClickListener) + .setPositiveButton("Rename", dialogClickListener) + .setNegativeButton("Open", dialogClickListener) .setNeutralButton("Delete", dialogClickListener).show(); } } - public static void goBack() { - if (main[pageId].isShown() && main[pageId].canGoBack()) { - main[pageId].goBack(); + public static void goBack(CustomWebView view) { + if (view.isShown() && view.canGoBack()) { + view.goBack(); } + Animation left = AnimationUtils.loadAnimation(CONTEXT, R.anim.left); + background.startAnimation(left); + } - public static void goForward() { - if (main[pageId].isShown() && main[pageId].canGoForward()) { - main[pageId].goForward(); + public static void goForward(CustomWebView view) { + if (view.isShown() && view.canGoForward()) { + view.goForward(); } + Animation right = AnimationUtils.loadAnimation(CONTEXT, R.anim.right); + background.startAnimation(right); } public static void onProgressChanged(int id, int progress) { - if (id == pageId) { + if (id == currentId) { browserProgress.setProgress(progress); if (progress < 100) { browserProgress.setVisibility(View.VISIBLE); @@ -2147,4 +2094,25 @@ public class BrowserActivity extends Activity implements OnTouchListener { } } } + + public static void reinitializeSettings() { + int size = tabList.size(); + for (int n = 0; n < size; n++) { + main[tabList.get(n)].settingsInitialization(CONTEXT); + } + } + + public static void toggleFullScreen() { + showFullScreen = settings.getBoolean("fullscreen", false); + CustomWebView.showFullScreen = showFullScreen; + if (fullScreen) { + background.removeView(uBar); + screen.addView(uBar); + fullScreen = false; + } else { + screen.removeView(uBar); + background.addView(uBar); + fullScreen = true; + } + } } \ No newline at end of file diff --git a/src/acr/browser/barebones/activities/IncognitoModeActivity.java b/src/acr/browser/barebones/activities/IncognitoModeActivity.java index db682e3..d4c4348 100644 --- a/src/acr/browser/barebones/activities/IncognitoModeActivity.java +++ b/src/acr/browser/barebones/activities/IncognitoModeActivity.java @@ -11,19 +11,19 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import acr.browser.barebones.R; import acr.browser.barebones.customwebview.IncognitoWebView; import acr.browser.barebones.databases.DatabaseHandler; import acr.browser.barebones.databases.SpaceTokenizer; -import acr.browser.barebones.incognitoclasses.IncognitoChromeClient; -import acr.browser.barebones.incognitoclasses.IncognitoDownloadListener; -import acr.browser.barebones.incognitoclasses.IncognitoLongClickListener; -import acr.browser.barebones.incognitoclasses.IncognitoWebViewClient; import acr.browser.barebones.utilities.BookmarkPageVariables; import acr.browser.barebones.utilities.FinalVariables; import acr.browser.barebones.utilities.HistoryPageVariables; import acr.browser.barebones.utilities.Utils; +import acr.browser.barebones.incognitoclasses.IncognitoChromeClient; +import acr.browser.barebones.incognitoclasses.IncognitoDownloadListener; +import acr.browser.barebones.incognitoclasses.IncognitoWebViewClient; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; @@ -74,8 +74,6 @@ import android.webkit.WebChromeClient.CustomViewCallback; import android.webkit.WebIconDatabase; import android.webkit.WebSettings; import android.webkit.WebSettings.LayoutAlgorithm; -import android.webkit.WebSettings.PluginState; -import android.webkit.WebSettings.RenderPriority; import android.webkit.WebView; import android.webkit.WebView.HitTestResult; import android.widget.AdapterView; @@ -92,7 +90,6 @@ import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; -import android.widget.Toast; @SuppressWarnings("deprecation") public class IncognitoModeActivity extends Activity implements OnTouchListener { @@ -117,18 +114,20 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { null, // Selection arguments (none) null, null, null); + handler.sendEmptyMessage(1); + } catch (SQLiteException ignored) { } catch (NullPointerException ignored) { } catch (IllegalStateException ignored) { } - list = new ArrayList>(); try { if (historyCursor != null) { if (historyCursor.moveToLast()) { // Variable for holding the retrieved URL - urlColumn = historyCursor.getColumnIndex("url"); - titleColumn = historyCursor.getColumnIndex("title"); + int urlColumn = historyCursor.getColumnIndex("url"); + int titleColumn = historyCursor + .getColumnIndex("title"); // Reference to the the column containing the URL int n = 0; do { @@ -146,7 +145,6 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } while (n < 49 && historyCursor.moveToPrevious()); } } - handler.sendEmptyMessage(1); } catch (SQLiteException ignored) { } catch (NullPointerException ignored) { } catch (IllegalStateException ignored) { @@ -162,8 +160,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } catch (IOException e) { e.printStackTrace(); } - if (urlBar.isShown()) { - urlTitle[pageId].setText("History"); + if (uBar.isShown()) { + currentTabTitle.setText("History"); setUrlText(""); getUrl.setPadding(tenPad, 0, tenPad, 0); } @@ -190,7 +188,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { view.startAnimation(fadeOut); } background.removeView(view); - urlBar.bringToFront(); + uBar.bringToFront(); } private static IncognitoModeActivity ACTIVITY; @@ -236,24 +234,35 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { readUrl.close(); } catch (IOException ignored) { } - openBookmarks(CONTEXT, main[pageId]); + openBookmarks(CONTEXT, currentTab); } - // variables to differentiate free from paid + // variables + + // constants public static final int MAX_TABS = FinalVariables.MAX_TABS; public static final int MAX_BOOKMARKS = FinalVariables.MAX_BOOKMARKS; public static final boolean PAID_VERSION = FinalVariables.PAID_VERSION; + public static final String HOMEPAGE = FinalVariables.HOMEPAGE; + public static final int API = FinalVariables.API; + public static final String SEPARATOR = "\\|\\$\\|SEPARATOR\\|\\$\\|"; + // semi constants public static Context CONTEXT; - - public static final String HOMEPAGE = FinalVariables.HOMEPAGE; public static String SEARCH; + public static List tabList; - public static SimpleAdapter adapter; + // variables + public static IncognitoWebView currentTab; + public static TextView currentTabTitle; public static MultiAutoCompleteTextView getUrl; - public static TextView[] urlTitle = new TextView[MAX_TABS]; - public static final IncognitoWebView[] main = new IncognitoWebView[MAX_TABS]; + public static TextView[] urlTitle; + public static ProgressBar browserProgress; + public static IncognitoWebView[] main; public static Rect bounds; + public static long timeTabPressed; + public static boolean fullScreen; + public static int[] tabOrder = new int[MAX_TABS]; public static ValueCallback mUploadMessage; public static ImageView refresh; public static ProgressBar progressBar; @@ -262,185 +271,71 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { public static Drawable incognitoPage; public static Drawable exitTab; public static long loadTime = 0; - public static int number; - public static int pageId = 0; - public static int agentPicker; - public static int enableFlash; + public static int currentId = 0; public static int height32; public static int height; public static int width; public static int pixels; public static int leftPad; public static int rightPad; - public static ProgressBar browserProgress; - public static final int API = FinalVariables.API; - public static int mShortAnimationDuration; public static int id; public static int tenPad; - public static int urlColumn; - public static int titleColumn; - public static int closeWindow; public static boolean isPhone = false; - public static boolean allowLocation; - public static boolean savePasswords; - public static boolean deleteHistory; - public static boolean saveTabs; - public static boolean showFullScreen; + public static boolean showFullScreen = false; public static boolean noStockBrowser = true; public static SharedPreferences settings; public static SharedPreferences.Editor edit; - public static String desktop; - public static String mobile; public static String user; - public static String urlA; - public static String title; - public static String[] memoryURL = new String[MAX_TABS]; - public static String[] bUrl = new String[MAX_BOOKMARKS]; - public static String[] bTitle = new String[MAX_BOOKMARKS]; + public static String[] memoryURL; + public static String[] bUrl; + public static String[] bTitle; public static String[] columns; public static String homepage; - public static final String preferences = "settings"; - public static String[][] urlToLoad = new String[MAX_TABS][2]; + public static String[][] urlToLoad; public static FrameLayout background; - public static RelativeLayout urlBar; + public static RelativeLayout uBar; + public static RelativeLayout screen; public static HorizontalScrollView tabScroll; public static Animation slideUp; public static Animation slideDown; public static Animation fadeOut; public static Animation fadeIn; - public static CookieManager cookieManager; - public static Uri bookmarks; - public static List> list; - public static Map map; - public static Handler handler, browserHandler; - public static DatabaseHandler historyHandler; - - public static StringBuilder sb; - - public static Runnable update; - - public static SQLiteDatabase s; - public static Drawable inactive; - public static Drawable active; - public static LinearLayout tabLayout; - public static String[] GetArray(String input) { - return input.split("\\|\\$\\|SEPARATOR\\|\\$\\|"); + public static String[] getArray(String input) { + return input.split(SEPARATOR); } - + + public static int newId(){ + + Random n = new Random(); + int id = n.nextInt(); + + while(tabList.contains(id)){ + id = n.nextInt(); + } + return id; + } + + + @SuppressWarnings("unused") public static void setFavicon(int id, Bitmap favicon) { Drawable icon = null; icon = new BitmapDrawable(null, favicon); icon.setBounds(0, 0, width / 2, height / 2); - - urlTitle[id].setCompoundDrawables(incognitoPage, null, exitTab, null); - - icon = null; - - } - - @SuppressLint("SetJavaScriptEnabled") - public static void browserSettings(Context context, IncognitoWebView view) { - WebSettings webViewSettings = view.getSettings(); - if (settings.getBoolean("java", true)) { - webViewSettings.setJavaScriptEnabled(true); - webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true); - } - - if (API < 14) { - switch (settings.getInt("textsize", 3)) { - case 1: - webViewSettings.setTextSize(WebSettings.TextSize.LARGEST); - break; - case 2: - webViewSettings.setTextSize(WebSettings.TextSize.LARGER); - break; - case 3: - webViewSettings.setTextSize(WebSettings.TextSize.NORMAL); - break; - case 4: - webViewSettings.setTextSize(WebSettings.TextSize.SMALLER); - break; - case 5: - webViewSettings.setTextSize(WebSettings.TextSize.SMALLEST); - break; - } - + if (icon != null) { + urlTitle[id].setCompoundDrawables(incognitoPage, null, exitTab, null); } else { - switch (settings.getInt("textsize", 3)) { - case 1: - webViewSettings.setTextZoom(200); - break; - case 2: - webViewSettings.setTextZoom(150); - break; - case 3: - webViewSettings.setTextZoom(100); - break; - case 4: - webViewSettings.setTextZoom(75); - break; - case 5: - webViewSettings.setTextZoom(50); - break; - } - } - webViewSettings.setSupportMultipleWindows(settings.getBoolean( - "newwindow", true)); - - switch (settings.getInt("enableflash", 0)) { - case 0: - break; - case 1: { - webViewSettings.setPluginState(PluginState.ON_DEMAND); - break; - } - case 2: { - webViewSettings.setPluginState(PluginState.ON); - break; - } - default: - break; - } - if (settings.getBoolean("passwords", false)) { - if (API < 18) { - webViewSettings.setSavePassword(true); - } - webViewSettings.setSaveFormData(true); + urlTitle[id] + .setCompoundDrawables(incognitoPage, null, exitTab, null); } - if (API < 18) { - try { - webViewSettings.setRenderPriority(RenderPriority.HIGH); - } catch (SecurityException ignored) { - - } - } - webViewSettings.setGeolocationEnabled(settings.getBoolean("location", - false)); - webViewSettings.setGeolocationDatabasePath(context.getFilesDir() - .getAbsolutePath()); - - webViewSettings.setUseWideViewPort(settings.getBoolean("wideviewport", - true)); - webViewSettings.setLoadWithOverviewMode(settings.getBoolean( - "overviewmode", true)); - - if (settings.getBoolean("textreflow", false)) { - webViewSettings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); - } else { - webViewSettings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL); - } - - webViewSettings.setBlockNetworkImage(settings.getBoolean("blockimages", - false)); - webViewSettings.setLoadsImagesAutomatically(true); + icon = null; } @@ -466,7 +361,15 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public void onAnimationEnd(Animation animation) { - urlTitle[del].setVisibility(View.GONE); + // urlTitle[del].setVisibility(View.GONE); + tabLayout.post(new Runnable() { + + @Override + public void run() { + tabLayout.removeView(urlTitle[del]); + } + + }); findNewView(del); main[del] = null; } @@ -481,31 +384,35 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { }); urlTitle[del].startAnimation(yolo); - urlBar.bringToFront(); + uBar.bringToFront(); } void findNewView(int id) { + int delete = tabList.indexOf(id); int leftId = id; boolean right = false, left = false; - if (id == pageId) { + if (id == currentId) { if (main[id].isShown()) { - // background.removeView(main[id]); removeView(main[id]); } - for (; id <= (number - 1); id++) { + + if (tabList.size() > delete + 1) { + id = tabList.get(delete + 1); if (urlTitle[id].isShown()) { background.addView(main[id]); main[id].setVisibility(View.VISIBLE); - urlBar.bringToFront(); + uBar.bringToFront(); if (API < 16) { urlTitle[id].setBackgroundDrawable(active); } else { urlTitle[id].setBackground(active); } urlTitle[id].setPadding(leftPad, 0, rightPad, 0); - pageId = id; - setUrlText(urlToLoad[pageId][0]); + currentId = id; + currentTab = main[id]; + currentTabTitle = urlTitle[id]; + setUrlText(urlToLoad[currentId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); right = true; if (main[id].getProgress() < 100) { @@ -517,37 +424,42 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); } - break; + // break; } } if (!right) { - for (; leftId >= 0; leftId--) { - + // for (; leftId >= 0; leftId--) { + if (delete > 0) { + leftId = tabList.get(delete - 1); if (urlTitle[leftId].isShown()) { background.addView(main[leftId]); main[leftId].setVisibility(View.VISIBLE); - // urlBar.bringToFront(); + // uBar.bringToFront(); if (API < 16) { urlTitle[leftId].setBackgroundDrawable(active); } else { urlTitle[leftId].setBackground(active); } urlTitle[leftId].setPadding(leftPad, 0, rightPad, 0); - pageId = leftId; - setUrlText(urlToLoad[pageId][0]); + currentId = leftId; + currentTab = main[leftId]; + currentTabTitle = urlTitle[leftId]; + setUrlText(urlToLoad[currentId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); left = true; if (main[leftId].getProgress() < 100) { - onProgressChanged(leftId, main[leftId].getProgress()); refresh.setVisibility(View.INVISIBLE); progressBar.setVisibility(View.VISIBLE); + onProgressChanged(leftId, + main[leftId].getProgress()); } else { - onProgressChanged(leftId, main[leftId].getProgress()); progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); + onProgressChanged(leftId, + main[leftId].getProgress()); } - break; + // break; } } @@ -557,18 +469,18 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } else { right = left = true; } - + tabList.remove(delete); if (!(right || left)) { finish(); } - urlBar.bringToFront(); - tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + uBar.bringToFront(); + tabScroll.smoothScrollTo(currentTabTitle.getLeft(), 0); } @Override public void onLowMemory() { for (int n = 0; n < MAX_TABS; n++) { - if (n != pageId && main[n] != null) { + if (n != currentId && main[n] != null) { main[n].freeMemory(); } } @@ -624,6 +536,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { getUrl.setPadding(tenPad, 0, tenPad, 0); getUrl.setBackgroundResource(R.drawable.book); getUrl.setPadding(tenPad, 0, tenPad, 0); + final List> list = new ArrayList>(); handler = new Handler() { @Override @@ -631,7 +544,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { switch (msg.what) { case 1: { - adapter = new SimpleAdapter(CONTEXT, list, + SimpleAdapter adapter = new SimpleAdapter(CONTEXT, list, R.layout.two_line_autocomplete, new String[] { "title", "url" }, new int[] { R.id.title, R.id.url }); @@ -687,14 +600,11 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { null, // Selection arguments (none) null, null, null); - handler.sendEmptyMessage(1); - } catch (SQLiteException ignored) { } catch (NullPointerException ignored) { } catch (IllegalStateException ignored) { } - list = new ArrayList>(); try { if (managedCursor != null) { @@ -702,19 +612,23 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { // Variable for holding the retrieved URL - urlColumn = managedCursor.getColumnIndex("url"); - titleColumn = managedCursor.getColumnIndex("title"); + int urlColumn = managedCursor.getColumnIndex("url"); + int titleColumn = managedCursor + .getColumnIndex("title"); // Reference to the the column containing the URL do { - urlA = managedCursor.getString(urlColumn); - title = managedCursor.getString(titleColumn); - map = new HashMap(); + String urlA = managedCursor + .getString(urlColumn); + String title = managedCursor + .getString(titleColumn); + Map map = new HashMap(); map.put("title", title); map.put("url", urlA); list.add(map); } while (managedCursor.moveToPrevious()); } } + handler.sendEmptyMessage(1); } catch (SQLiteException ignored) { } catch (NullPointerException ignored) { } catch (IllegalStateException ignored) { @@ -771,10 +685,10 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public void onClick(View v) { - if (main[pageId].canGoBack()) { - main[pageId].goBack(); + if (currentTab.canGoBack()) { + currentTab.goBack(); } else { - deleteTab(pageId); + deleteTab(currentId); } } @@ -797,7 +711,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { background.clearDisappearingChildren(); tabScroll.clearDisappearingChildren(); if (settings.getBoolean("cache", false)) { - main[pageId].clearCache(true); + currentTab.clearCache(true); Log.i("Lightning", "Cache Cleared"); } super.finish(); @@ -814,8 +728,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public void onClick(View v) { - if (main[pageId].canGoForward()) { - main[pageId].goForward(); + if (currentTab.canGoForward()) { + currentTab.goForward(); } } @@ -847,6 +761,14 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @SuppressLint("InlinedApi") private void initialize() { + + tabList = new ArrayList(); + bUrl = new String[MAX_BOOKMARKS]; + bTitle = new String[MAX_BOOKMARKS]; + main = new IncognitoWebView[MAX_TABS]; + urlTitle = new TextView[MAX_TABS]; + urlToLoad = new String[MAX_TABS][2]; + fullScreen = false; DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); historyHandler = new DatabaseHandler(this); @@ -867,8 +789,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } showFullScreen = settings.getBoolean("fullscreen", false); - urlBar = (RelativeLayout) findViewById(R.id.urlBar); - RelativeLayout bg = (RelativeLayout) findViewById(R.id.background); + uBar = (RelativeLayout) findViewById(R.id.urlBar); + screen = (RelativeLayout) findViewById(R.id.background); slideUp = AnimationUtils.loadAnimation(this, R.anim.slide_up); slideDown = AnimationUtils.loadAnimation(this, R.anim.slide_down); fadeOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out); @@ -876,13 +798,11 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { fadeIn = AnimationUtils.loadAnimation(this, android.R.anim.fade_in); // mShortAnimationDuration = getResources().getInteger( // android.R.integer.config_mediumAnimTime); - mShortAnimationDuration = 250; slideUp.setAnimationListener(new AnimationListener() { @Override public void onAnimationEnd(Animation arg0) { - - urlBar.setVisibility(View.GONE); + uBar.setVisibility(View.GONE); } @Override @@ -910,8 +830,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public void onAnimationStart(Animation animation) { - - urlBar.setVisibility(View.VISIBLE); + uBar.setVisibility(View.VISIBLE); } }); @@ -929,10 +848,6 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { background = (FrameLayout) findViewById(R.id.holder); defaultUser = user; // setting mobile user // agent - mobile = FinalVariables.MOBILE_USER_AGENT; - desktop = FinalVariables.DESKTOP_USER_AGENT; // setting - // desktop user agent - switch (settings.getInt("search", 1)) { case 1: SEARCH = FinalVariables.GOOGLE_SEARCH; @@ -955,6 +870,9 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { case 7: SEARCH = FinalVariables.YANDEX_SEARCH; break; + case 8: + SEARCH = FinalVariables.DUCK_LITE_SEARCH; + break; } exitTab = getResources().getDrawable(R.drawable.stop); // user @@ -964,23 +882,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { // stored // homepage // variable - allowLocation = settings.getBoolean("location", false); // initializing - // location - // variable - savePasswords = settings.getBoolean("passwords", false); // initializing - // save - // passwords - // variable - enableFlash = settings.getInt("enableflash", 0); // enable flash - // boolean - agentPicker = settings.getInt("agentchoose", 1); // which user agent to - // use, 1=mobile, - // 2=desktop, - // 3=custom - - deleteHistory = settings.getBoolean("history", false); // delete history - // on exit - // boolean + // initializing variables declared height = getResources().getDrawable(R.drawable.loading) @@ -993,7 +895,6 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); // opens icondatabase so that favicons can be stored - WebIconDatabase.getInstance().open( getDir("icons", MODE_PRIVATE).getPath()); @@ -1016,7 +917,6 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { rightPad = (int) (15 * scale + 0.5f); height32 = (int) (32 * scale + 0.5f); tenPad = (int) (10 * scale + 0.5f); - number = 0; webpageOther = getResources().getDrawable(R.drawable.webpage); incognitoPage = getResources().getDrawable(R.drawable.incognito); @@ -1040,11 +940,11 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { newTab.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - newTab(number, homepage, true, false); + newTab(homepage, true); tabScroll.postDelayed(new Runnable() { @Override public void run() { - tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); + tabScroll.smoothScrollTo(currentTabTitle.getLeft(), 0); } }, 100L); @@ -1055,15 +955,14 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public boolean onLongClick(View v) { if (settings.getString("oldPage", "").length() > 0) { - newTab(number, settings.getString("oldPage", ""), true, - false); + newTab(settings.getString("oldPage", ""), true); edit.putString("oldPage", ""); edit.commit(); tabScroll.postDelayed(new Runnable() { @Override public void run() { tabScroll.smoothScrollTo( - urlTitle[pageId].getLeft(), 0); + currentTabTitle.getLeft(), 0); } }, 100L); } @@ -1077,10 +976,10 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public void onClick(View arg0) { - if (main[pageId].getProgress() < 100) { - main[pageId].stopLoading(); + if (currentTab.getProgress() < 100) { + currentTab.stopLoading(); } else { - main[pageId].reload(); + currentTab.reload(); } } @@ -1088,9 +987,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { enterUrl(); if (showFullScreen) { - bg.removeView(urlBar); - background.addView(urlBar); - } + toggleFullScreen(); + } browserHandler = new Handle(); } @@ -1101,7 +999,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { public void handleMessage(Message msg) { switch (msg.what) { case 1: { - main[pageId].loadUrl(getUrl.getText().toString()); + currentTab.loadUrl(getUrl.getText().toString()); break; } case 2: { @@ -1109,7 +1007,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { break; } case 3: { - main[pageId].invalidate(); + currentTab.invalidate(); break; } } @@ -1121,57 +1019,76 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { void reopenOldTabs() { Intent url = getIntent(); String URL = url.getDataString(); + boolean oldTabs = false; + + if (settings.getBoolean("savetabs", true)) { + if (URL != null) { + // opens a new tab with the url if its there + int n = newTab(URL, true); + main[n].resumeTimers(); + oldTabs = true; - if (URL != null) { - // opens a new tab with the URL if its there - newTab(number, URL, true, false); - main[number - 1].resumeTimers(); + } + boolean first = false; + for (String aMemoryURL : memoryURL) { + if (aMemoryURL.length() > 0) { + if (!first) { + int n = newTab("", !oldTabs); + main[n].resumeTimers(); + main[n].getSettings().setCacheMode( + WebSettings.LOAD_CACHE_ELSE_NETWORK); + main[n].loadUrl(aMemoryURL); + } else { + int n = newTab("", false); + main[n].getSettings().setCacheMode( + WebSettings.LOAD_CACHE_ELSE_NETWORK); + main[n].loadUrl(aMemoryURL); + } + oldTabs = true; + } + } + + if (!oldTabs) { + int n = newTab(homepage, true); + main[n].resumeTimers(); + } } else { - // otherwise it opens the home-page - newTab(number, homepage, true, false); - main[number - 1].resumeTimers(); + if (URL != null) { + // opens a new tab with the URL if its there + int n = newTab(URL, true); + main[n].resumeTimers(); - } + } else { + // otherwise it opens the home-page + int n = newTab(homepage, true); + main[n].resumeTimers(); + } + } } - public static IncognitoWebView makeTab(final int pageToView, String Url, + public static IncognitoWebView generateTab(final int pageToView, String Url, final boolean display) { IncognitoWebView view = new IncognitoWebView(CONTEXT); view.setId(pageToView); - allowLocation = settings.getBoolean("location", false); - browserSettings(CONTEXT, view); view.setWebViewClient(new IncognitoWebViewClient(ACTIVITY)); view.setWebChromeClient(new IncognitoChromeClient(ACTIVITY)); if (API > 8) { view.setDownloadListener(new IncognitoDownloadListener(ACTIVITY)); } - view.setOnLongClickListener(new IncognitoLongClickListener()); - - agentPicker = settings.getInt("agentchoose", 1); - switch (agentPicker) { - case 1: - view.getSettings().setUserAgentString(defaultUser); - break; - case 2: - view.getSettings().setUserAgentString(desktop); - break; - case 3: - view.getSettings().setUserAgentString(mobile); - break; - case 4: - view.getSettings().setUserAgentString(settings.getString("userAgentString", defaultUser)); - break; - } if (display) { - background.removeView(main[pageId]); + if (currentId != -1) { + background.removeView(currentTab); + } background.addView(view); view.requestFocus(); - pageId = pageToView; + currentId = pageToView; + currentTab = main[pageToView]; + currentTabTitle = urlTitle[pageToView]; } - urlBar.bringToFront(); + uBar.bringToFront(); if (Url.contains("about:home")) { goBookmarks(CONTEXT, view); } else if (Url.contains("about:blank")) { @@ -1192,161 +1109,106 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } // new tab method, takes the id of the tab to be created and the url to load - public static int newTab(int theId, final String theUrl, - final boolean display, final boolean incognito_mode) { + public static int newTab(final String theUrl, final boolean display) { Log.i("Browser", "making tab"); - - int finalID = 0; homepage = settings.getString("home", HOMEPAGE); - allowLocation = settings.getBoolean("location", false); - boolean reuseWebView = false; - - for (int num = 0; num < number; num++) { - if (urlTitle[num].getVisibility() == View.GONE) { - - final int n = num; - Animation holo = AnimationUtils.loadAnimation(CONTEXT, - R.anim.up); - holo.setAnimationListener(new AnimationListener() { - - @Override - public void onAnimationEnd(Animation animation) { - } - - @Override - public void onAnimationRepeat(Animation animation) { - } - - @Override - public void onAnimationStart(Animation animation) { - urlTitle[n].setVisibility(View.VISIBLE); - } - - }); - urlTitle[n].startAnimation(holo); - urlTitle[num].setText("New Tab"); - - if (display) { - if (API < 16) { - urlTitle[num].setBackgroundDrawable(active); - } else { - urlTitle[num].setBackground(active); - } - } else { - if (API < 16) { - urlTitle[num].setBackgroundDrawable(inactive); - } else { - urlTitle[num].setBackground(inactive); - } - } - urlTitle[num].setPadding(leftPad, 0, rightPad, 0); - if (display) { - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(inactive); - } else { - urlTitle[pageId].setBackground(inactive); - } - } - urlTitle[num].setCompoundDrawables(incognitoPage, null, - exitTab, null); - urlTitle[num].setPadding(leftPad, 0, rightPad, 0); - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - - main[num] = makeTab(num, theUrl, display); - finalID = num; - pageId = num; - - urlBar.bringToFront(); - - if (API >= 11) { - main[num].onResume(); - } + int finalID = createTab(theUrl, display); + if (finalID != -1) { + tabList.add(finalID); + if (display) { + currentId = finalID; + currentTab = main[finalID]; + currentTabTitle = urlTitle[finalID]; + } - reuseWebView = true; + return finalID; + } else { + return 0; + } + } + + //creates the tab and returns the ID of the view + public static int createTab(String theUrl, boolean display) { + int id = -1; + for (int n = 0; n < MAX_TABS; n++) { + if (main[n] == null) { + id = n; break; } } - if (!reuseWebView) { - if (number < MAX_TABS) { - if (number > 0) { - if (display) { - if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(inactive); - } else { - urlTitle[pageId].setBackground(inactive); - } - - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - } - } - final TextView title = new TextView(CONTEXT); - title.setText("New Tab"); + if (id != -1) { + if (id > 0) { if (display) { if (API < 16) { - title.setBackgroundDrawable(active); + currentTabTitle.setBackgroundDrawable(inactive); } else { - title.setBackground(active); + currentTabTitle.setBackground(inactive); } + currentTabTitle.setPadding(leftPad, 0, rightPad, 0); + } + } + final TextView title = new TextView(CONTEXT); + title.setText("New Tab"); + if (display) { + if (API < 16) { + title.setBackgroundDrawable(active); } else { - if (API < 16) { - title.setBackgroundDrawable(inactive); - } else { - title.setBackground(inactive); - } + title.setBackground(active); + } + } else { + if (API < 16) { + title.setBackgroundDrawable(inactive); + } else { + title.setBackground(inactive); } - title.setSingleLine(true); - title.setGravity(Gravity.CENTER_VERTICAL); - title.setHeight(height32); - title.setWidth(pixels); - title.setPadding(leftPad, 0, rightPad, 0); - title.setId(number); - title.setGravity(Gravity.CENTER_VERTICAL); - - title.setCompoundDrawables(webpageOther, null, exitTab, null); - - Drawable[] drawables = title.getCompoundDrawables(); - bounds = drawables[2].getBounds(); - title.setOnTouchListener(ACTIVITY); - Animation holo = AnimationUtils.loadAnimation(CONTEXT, - R.anim.up); - tabLayout.addView(title); - title.setVisibility(View.INVISIBLE); - holo.setAnimationListener(new AnimationListener() { + } + title.setSingleLine(true); + title.setGravity(Gravity.CENTER_VERTICAL); + title.setHeight(height32); + title.setWidth(pixels); + title.setPadding(leftPad, 0, rightPad, 0); + title.setId(id); + title.setGravity(Gravity.CENTER_VERTICAL); + + title.setCompoundDrawables(incognitoPage, null, exitTab, null); + + Drawable[] drawables = title.getCompoundDrawables(); + bounds = drawables[2].getBounds(); + title.setOnTouchListener(ACTIVITY); + Animation holo = AnimationUtils.loadAnimation(CONTEXT, R.anim.up); + tabLayout.addView(title); + title.setVisibility(View.INVISIBLE); + holo.setAnimationListener(new AnimationListener() { - @Override - public void onAnimationEnd(Animation animation) { - } + @Override + public void onAnimationEnd(Animation animation) { + } - @Override - public void onAnimationRepeat(Animation animation) { - } + @Override + public void onAnimationRepeat(Animation animation) { + } - @Override - public void onAnimationStart(Animation animation) { - title.setVisibility(View.VISIBLE); - } + @Override + public void onAnimationStart(Animation animation) { + title.setVisibility(View.VISIBLE); + } - }); - title.startAnimation(holo); - urlTitle[number] = title; + }); + title.startAnimation(holo); + urlTitle[id] = title; - urlTitle[number].setText("New Tab"); + urlTitle[id].setText("New Tab"); - if (theUrl != null) { - main[number] = makeTab(number, theUrl, display); - } else { - main[number] = makeTab(number, homepage, display); - } - finalID = number; - number = number + 1; + if (theUrl != null) { + main[id] = generateTab(id, theUrl, display); + } else { + main[id] = generateTab(id, homepage, display); } - } - if (!reuseWebView && number >= MAX_TABS) { - Toast.makeText(CONTEXT, "Maximum number of tabs reached...", - Toast.LENGTH_SHORT).show(); - } - return finalID; + } else { + Utils.showToast(CONTEXT, "Max number of tabs reached"); + } + return id; } @Override @@ -1366,27 +1228,28 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public void onBackPressed() { try { - if (showFullScreen && !urlBar.isShown()) { - urlBar.startAnimation(slideDown); + if (showFullScreen && !uBar.isShown()) { + uBar.startAnimation(slideDown); } - if (main[pageId].isShown() && main[pageId].canGoBack()) { - main[pageId].goBack(); + if (currentTab.isShown() && currentTab.canGoBack()) { + currentTab.goBack(); } else { - deleteTab(pageId); - urlBar.bringToFront(); + deleteTab(currentId); + uBar.bringToFront(); } } catch (NullPointerException ignored) { } + return; } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (settings.getBoolean("textreflow", false)) { - main[pageId].getSettings().setLayoutAlgorithm( + currentTab.getSettings().setLayoutAlgorithm( LayoutAlgorithm.NARROW_COLUMNS); } else { - main[pageId].getSettings().setLayoutAlgorithm( + currentTab.getSettings().setLayoutAlgorithm( LayoutAlgorithm.NORMAL); } @@ -1398,19 +1261,18 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { setContentView(R.layout.activity_main); // displays main xml layout CONTEXT = this; ACTIVITY = this; - settings = getSharedPreferences(preferences, 0); + settings = getSharedPreferences("settings", 0); edit = settings.edit(); if (settings.getBoolean("hidestatus", false)) { getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } - - saveTabs = settings.getBoolean("savetabs", true); - if (saveTabs) { + if (settings.getBoolean("savetabs", true)) { String mem = settings.getString("memory", ""); edit.putString("memory", ""); - memoryURL = GetArray(mem); + memoryURL = new String[MAX_TABS]; + memoryURL = getArray(mem); } inactive = getResources().getDrawable(R.drawable.bg_inactive); @@ -1429,17 +1291,20 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { isPhone = sizeInInches < 6.5; forward();// forward button back(); - int first = settings.getInt("second", 0); - - if (first == 0) { // This dialog alerts the user to some navigation - // techniques - String message = "Incognito mode does not add the pages you visit to your history," - + " so no one can see where you've been. For protection from tracking, Incognito also does" - + " not allow browser Cookies."; - Utils.createInformativeDialog(CONTEXT, "About Incognito", message); - edit.putInt("second", 1); + if (settings.getInt("first", 0) == 0) { // This dialog alerts the user + // to some navigation + // techniques + String message = "1. Long-press back button to exit browser\n\n" + + "2. Swipe from left edge toward the right (---->) to go back\n\n" + + "3. Swipe from right edge toward the left (<----)to go forward\n\n" + + "4. Visit settings and advanced settings to change options\n\n" + + "5. Long-press on the new tab button to open the last closed tab"; + + Utils.createInformativeDialog(CONTEXT, "Browser Tips", message); + edit.putInt("first", 1); edit.commit(); } + } @Override @@ -1458,10 +1323,45 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_SEARCH) { + switch (keyCode) { + case KeyEvent.KEYCODE_SEARCH: { getUrl.requestFocus(); InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); manager.showSoftInput(getUrl, 0); + + break; + } + case KeyEvent.KEYCODE_F5: { + currentTab.reload(); + } + case KeyEvent.KEYCODE_ESCAPE: { + currentTab.stopLoading(); + } + case KeyEvent.KEYCODE_TAB: { + InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if(!manager.isActive()){ + newTab(homepage, true); + } + + } + case KeyEvent.KEYCODE_F12: { + finish(); + } + case KeyEvent.KEYCODE_F6:{ + getUrl.selectAll(); + } + case KeyEvent.KEYCODE_F10: { + startActivity(new Intent(FinalVariables.SETTINGS_INTENT)); + } + case KeyEvent.KEYCODE_F11:{ + toggleFullScreen(); + } + case KeyEvent.KEYCODE_DEL:{ + InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + if(!manager.isActive()){ + currentTab.goBack(); + } + } } return super.onKeyDown(keyCode, event); } @@ -1503,7 +1403,7 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } else if (download == 1) { Utils.downloadFile(CONTEXT, url, null, null); } else if (url != null) { - newTab(number, url, true, false); + newTab(url, true); } super.onNewIntent(intent); @@ -1514,13 +1414,13 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { switch (item.getItemId()) { case R.id.history: - generateHistory(main[pageId], CONTEXT); + generateHistory(currentTab, CONTEXT); return true; case R.id.bookmark: - if (urlToLoad[pageId][1] != null) { - if (!urlToLoad[pageId][1].equals("Bookmarks")) { - Utils.addBookmark(CONTEXT, urlToLoad[pageId][1], - urlToLoad[pageId][0]); + if (urlToLoad[currentId][1] != null) { + if (!urlToLoad[currentId][1].equals("Bookmarks")) { + Utils.addBookmark(CONTEXT, urlToLoad[currentId][1], + urlToLoad[currentId][0]); } } return true; @@ -1528,16 +1428,18 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { newSettings(); return true; case R.id.allBookmarks: - if (urlToLoad[pageId][1] == null) { - goBookmarks(CONTEXT, main[pageId]); - } else if (!urlToLoad[pageId][1].equals("Bookmarks")) { - goBookmarks(CONTEXT, main[pageId]); + if (urlToLoad[currentId][1] == null) { + goBookmarks(CONTEXT, currentTab); + } else if (!urlToLoad[currentId][1].equals("Bookmarks")) { + goBookmarks(CONTEXT, currentTab); } return true; - + case R.id.share: + share(); + return true; case R.id.incognito: - newTab(number, homepage, true, true); + newTab(homepage, true); return true; default: return super.onOptionsItemSelected(item); @@ -1547,11 +1449,11 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override protected void onPause() { - if (main[pageId] != null) { + if (currentTab != null) { if (API >= 11) { - main[pageId].onPause(); + currentTab.onPause(); } - main[pageId].pauseTimers(); + currentTab.pauseTimers(); } Thread remember = new Thread(new Runnable() { @@ -1573,15 +1475,20 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override protected void onResume() { - onProgressChanged(pageId, main[pageId].getProgress()); - if (main[pageId].getProgress() == 100) { + onProgressChanged(currentId, currentTab.getProgress()); + if (currentTab.getProgress() == 100) { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); + } if (API >= 11) { - main[pageId].onResume(); + currentTab.onResume(); + } + reinitializeSettings(); + currentTab.resumeTimers(); + if(settings.getBoolean("fullscreen", false)!=fullScreen){ + toggleFullScreen(); } - main[pageId].resumeTimers(); super.onResume(); } @@ -1606,8 +1513,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } view.loadUrl("file://" + bookmarkWebPage); - if (urlBar.isShown()) { - urlTitle[pageId].setText("Bookmarks"); + if (uBar.isShown()) { + currentTabTitle.setText("Bookmarks"); setUrlText(""); getUrl.setPadding(tenPad, 0, tenPad, 0); } @@ -1633,15 +1540,15 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { switch (item.getItemId()) { case R.id.history: - generateHistory(main[pageId], CONTEXT); + generateHistory(currentTab, CONTEXT); return true; case R.id.bookmark: - if (urlToLoad[pageId][1] != null) { - if (!urlToLoad[pageId][1] + if (urlToLoad[currentId][1] != null) { + if (!urlToLoad[currentId][1] .equals("Bookmarks")) { Utils.addBookmark(CONTEXT, - urlToLoad[pageId][1], - urlToLoad[pageId][0]); + urlToLoad[currentId][1], + urlToLoad[currentId][0]); } } return true; @@ -1649,16 +1556,18 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { newSettings(); return true; case R.id.allBookmarks: - if (urlToLoad[pageId][1] == null) { - goBookmarks(CONTEXT, main[pageId]); - } else if (!urlToLoad[pageId][1] + if (urlToLoad[currentId][1] == null) { + goBookmarks(CONTEXT, currentTab); + } else if (!urlToLoad[currentId][1] .equals("Bookmarks")) { - goBookmarks(CONTEXT, main[pageId]); + goBookmarks(CONTEXT, currentTab); } return true; - + case R.id.share: + share(); + return true; case R.id.incognito: - newTab(number, homepage, true, true); + newTab(homepage,true); return true; default: return false; @@ -1675,19 +1584,32 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } }); - options.setOnLongClickListener(new OnLongClickListener() { + } - @Override - public boolean onLongClick(View arg0) { - return true; - } + static void share() { + Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); - }); + // set the type + shareIntent.setType("text/plain"); + + // add a subject + shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, + urlToLoad[currentId][1]); + + // build the body of the message to be shared + String shareMessage = urlToLoad[currentId][0]; + + // add the message + shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareMessage); + + // start the chooser for sharing + CONTEXT.startActivity(Intent.createChooser(shareIntent, + "Share this page")); } static void searchTheWeb(String query, Context context) { query = query.trim(); - main[pageId].stopLoading(); + currentTab.stopLoading(); if (query.startsWith("www.")) { query = "http://" + query; @@ -1705,16 +1627,16 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { boolean isSearch = ((query.contains(" ") || !containsPeriod) && !aboutScheme); if (query.contains("about:home") || query.contains("about:bookmarks")) { - goBookmarks(context, main[pageId]); + goBookmarks(context, currentTab); } else if (query.contains("about:history")) { - generateHistory(main[pageId], context); + generateHistory(currentTab, context); } else if (isSearch) { query.replaceAll(" ", "+"); - main[pageId].loadUrl(SEARCH + query); + currentTab.loadUrl(SEARCH + query); } else if (!validURL) { - main[pageId].loadUrl("http://" + query); + currentTab.loadUrl("http://" + query); } else { - main[pageId].loadUrl(query); + currentTab.loadUrl(query); } } @@ -1724,8 +1646,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); - if (showFullScreen && urlBar.isShown()) { - urlBar.startAnimation(slideUp); + if (showFullScreen && uBar.isShown()) { + uBar.startAnimation(slideUp); } } view.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); @@ -1733,7 +1655,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { loadTime = System.currentTimeMillis() - loadTime; Log.i("Lightning", "Load Time: " + loadTime); } - + + public static void onPageStarted(WebView view, String url, Bitmap favicon) { Log.i("Lightning", "Page Started"); loadTime = System.currentTimeMillis(); @@ -1754,43 +1677,46 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { urlTitle[numberPage].setCompoundDrawables(incognitoPage, null, exitTab, null); + if (favicon != null) { + setFavicon(view.getId(), favicon); + } getUrl.setPadding(tenPad, 0, tenPad, 0); urlToLoad[numberPage][0] = url; - if (!urlBar.isShown() && showFullScreen) { - urlBar.startAnimation(slideDown); + if (!uBar.isShown() && showFullScreen) { + uBar.startAnimation(slideDown); } } public static void onCreateWindow(Message resultMsg) { - newTab(number, "", true, false); + newTab("", true); WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; - transport.setWebView(main[pageId]); + transport.setWebView(currentTab); resultMsg.sendToTarget(); browserHandler.postDelayed(new Runnable() { @Override public void run() { - main[pageId].loadUrl(getUrl.getText().toString()); + currentTab.loadUrl(getUrl.getText().toString()); } }, 500); } public static void onShowCustomView() { - background.removeView(main[pageId]); - urlBar.setVisibility(View.GONE); + background.removeView(currentTab); + uBar.setVisibility(View.GONE); } public static void onHideCustomView(FrameLayout fullScreenContainer, - CustomViewCallback mCustomViewCallback, int orientation) { + CustomViewCallback mIncognitoViewCallback, int orientation) { FrameLayout screen = (FrameLayout) ACTIVITY.getWindow().getDecorView(); screen.removeView(fullScreenContainer); fullScreenContainer = null; - mCustomViewCallback.onCustomViewHidden(); + mIncognitoViewCallback.onCustomViewHidden(); ACTIVITY.setRequestedOrientation(orientation); - background.addView(main[pageId]); - urlBar.setVisibility(View.VISIBLE); - urlBar.bringToFront(); + background.addView(currentTab); + uBar.setVisibility(View.VISIBLE); + uBar.bringToFront(); } public static void onReceivedTitle(int numberPage, String title) { @@ -1811,88 +1737,108 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { + try{ id = v.getId(); background.clearDisappearingChildren(); boolean xPress = false; int x = (int) event.getX(); int y = (int) event.getY(); Rect edge = new Rect(); - v.getLocalVisibleRect(edge); + v.getDrawingRect(edge); + currentTabTitle.setPadding(leftPad, 0, rightPad, 0); + if (event.getAction() == MotionEvent.ACTION_DOWN) { + timeTabPressed = System.currentTimeMillis(); + } else if (event.getAction() == MotionEvent.ACTION_UP) { + + if ((System.currentTimeMillis() - timeTabPressed) > 1000) { + xPress = true; + } - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); - if (event.getAction() == MotionEvent.ACTION_UP) { if (x >= (edge.right - bounds.width() - v.getPaddingRight() - 10 * 3 / 2) && x <= (edge.right - v.getPaddingRight() + 10 * 3 / 2) && y >= (v.getPaddingTop() - 10 / 2) && y <= (v.getHeight() - v.getPaddingBottom() + 10 / 2)) { xPress = true; } - if (id == pageId) { + if (id == currentId) { if (xPress) { deleteTab(id); - urlBar.bringToFront(); + uBar.bringToFront(); } - } else if (id != pageId) { + } else if (id != currentId) { if (xPress) { deleteTab(id); } else { if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(inactive); + currentTabTitle.setBackgroundDrawable(inactive); } else if (API > 15) { - urlTitle[pageId].setBackground(inactive); + currentTabTitle.setBackground(inactive); } - urlTitle[pageId].setPadding(leftPad, 0, rightPad, 0); + currentTabTitle.setPadding(leftPad, 0, rightPad, 0); if (!showFullScreen) { background.addView(main[id]); main[id].startAnimation(fadeIn); - main[pageId].startAnimation(fadeOut); - background.removeView(main[pageId]); - urlBar.bringToFront(); + currentTab.startAnimation(fadeOut); + background.removeView(currentTab); + uBar.bringToFront(); } else if (API >= 12) { main[id].setAlpha(0f); background.addView(main[id]); try { - main[id].animate().alpha(1f) - .setDuration(mShortAnimationDuration); + main[id].animate().alpha(1f).setDuration(250); } catch (NullPointerException ignored) { } - background.removeView(main[pageId]); - urlBar.bringToFront(); + background.removeView(currentTab); + uBar.bringToFront(); } else { - background.removeView(main[pageId]); + background.removeView(currentTab); background.addView(main[id]); } - urlBar.bringToFront(); + uBar.bringToFront(); - pageId = id; - setUrlText(urlToLoad[pageId][0]); + currentId = id; + currentTab = main[id]; + currentTabTitle = urlTitle[id]; + setUrlText(urlToLoad[currentId][0]); getUrl.setPadding(tenPad, 0, tenPad, 0); if (API < 16) { - urlTitle[pageId].setBackgroundDrawable(active); + currentTabTitle.setBackgroundDrawable(active); } else if (API > 15) { - urlTitle[pageId].setBackground(active); + currentTabTitle.setBackground(active); } - if (main[pageId].getProgress() < 100) { + if (currentTab.getProgress() < 100) { refresh.setVisibility(View.INVISIBLE); + progressBar.setVisibility(View.VISIBLE); + } else { progressBar.setVisibility(View.GONE); refresh.setVisibility(View.VISIBLE); } - onProgressChanged(pageId, main[pageId].getProgress()); - tabScroll.smoothScrollTo(urlTitle[pageId].getLeft(), 0); - main[pageId].invalidate(); + onProgressChanged(currentId, currentTab.getProgress()); + tabScroll.smoothScrollTo(currentTabTitle.getLeft(), 0); + currentTab.invalidate(); } } } - urlBar.bringToFront(); + uBar.bringToFront(); v.setPadding(leftPad, 0, rightPad, 0); + } + catch(Exception e){ + e.printStackTrace(); + Log.e("Lightning Error", "Well we dun messed up"); + } return true; } public static class ClickHandler extends Handler { + /* + * (non-Javadoc) + * + * @see android.os.Handler#handleMessage(android.os.Message) + */ @Override public void handleMessage(Message msg) { super.handleMessage(msg); @@ -1903,7 +1849,8 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } - public static boolean onLongClick(final int n) { + public static boolean onLongClick() { + final int n = currentId; final HitTestResult result = main[n].getHitTestResult(); if (main[n].getUrl().contains( @@ -1915,17 +1862,20 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { main[n].requestFocusNodeHref(message); return true; - } else if (result.getExtra() != null) { + } else if (result != null) { + if(result.getExtra()!=null){ if (result.getType() == 5 && API > 8) { DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, result.getExtra(), false, false); + int num = currentId; + newTab(result.getExtra(), false); // urlTitle[num].performClick(); - pageId = num; + currentId = num; + currentTab = main[num]; + currentTabTitle = urlTitle[num]; break; } case DialogInterface.BUTTON_NEGATIVE: { @@ -1959,9 +1909,11 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, result.getExtra(), false, false); - pageId = num; + int num = currentId; + newTab(result.getExtra(), false); + currentId = num; + currentTab = main[num]; + currentTabTitle = urlTitle[num]; break; } case DialogInterface.BUTTON_NEGATIVE: { @@ -1988,14 +1940,17 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { }; AlertDialog.Builder builder = new AlertDialog.Builder(CONTEXT); // dialog - builder.setTitle(result.getExtra()).setMessage("What do you want to do with this link?") + builder.setTitle(result.getExtra()) + .setMessage("What do you want to do with this link?") .setPositiveButton("Open in New Tab", dialogClickListener) .setNegativeButton("Open Normally", dialogClickListener) .setNeutralButton("Copy link", dialogClickListener) .show(); } + } return true; + } else { return false; } @@ -2010,10 +1965,11 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: { - int num = pageId; - newTab(number, clickedURL, false, false); - // urlTitle[num].performClick(); - pageId = num; + int num = currentId; + newTab(clickedURL, false); + currentId = num; + currentTab = main[num]; + currentTabTitle = urlTitle[num]; break; } case DialogInterface.BUTTON_NEGATIVE: { @@ -2036,19 +1992,25 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } } - public static void goBack() { - if (main[pageId].isShown() && main[pageId].canGoBack()) { - main[pageId].goBack(); + public static void goBack(IncognitoWebView view) { + if (view.isShown() && view.canGoBack()) { + view.goBack(); } + Animation left = AnimationUtils.loadAnimation(CONTEXT, R.anim.left); + background.startAnimation(left); + } - public static void goForward() { - if (main[pageId].isShown() && main[pageId].canGoForward()) { - main[pageId].goForward(); + public static void goForward(IncognitoWebView view) { + if (view.isShown() && view.canGoForward()) { + view.goForward(); } + Animation right = AnimationUtils.loadAnimation(CONTEXT, R.anim.right); + background.startAnimation(right); } + public static void onProgressChanged(int id, int progress) { - if (id == pageId) { + if (id == currentId) { browserProgress.setProgress(progress); if (progress < 100) { browserProgress.setVisibility(View.VISIBLE); @@ -2057,4 +2019,24 @@ public class IncognitoModeActivity extends Activity implements OnTouchListener { } } } + + public static void reinitializeSettings(){ + for(int n = 0; n < tabList.size(); n++){ + main[tabList.get(n)].settingsInitialization(CONTEXT); + } + } + + public static void toggleFullScreen(){ + showFullScreen = settings.getBoolean("fullscreen", false); + IncognitoWebView.showFullScreen = showFullScreen; + if(fullScreen){ + background.removeView(uBar); + screen.addView(uBar); + fullScreen = false; + }else{ + screen.removeView(uBar); + background.addView(uBar); + fullScreen = true; + } + } } \ No newline at end of file diff --git a/src/acr/browser/barebones/activities/SettingsActivity.java b/src/acr/browser/barebones/activities/SettingsActivity.java index fe02977..79259a8 100644 --- a/src/acr/browser/barebones/activities/SettingsActivity.java +++ b/src/acr/browser/barebones/activities/SettingsActivity.java @@ -95,6 +95,9 @@ public class SettingsActivity extends Activity { case 7: searchText.setText("Yandex"); break; + case 8: + searchText.setText("DuckDuckGo Lite"); + break; } back.setBackgroundResource(R.drawable.button); @@ -224,8 +227,8 @@ public class SettingsActivity extends Activity { AlertDialog.Builder picker = new AlertDialog.Builder( SettingsActivity.this); picker.setTitle("Search Engine"); - CharSequence[] chars = { "Google (Suggested)", "Bing", "Yahoo", - "StartPage", "DuckDuckGo (Privacy)" , "Baidu (Chinese)", "Yandex (Russian)"}; + CharSequence[] chars = { "Google", "Bing", "Yahoo", + "StartPage", "DuckDuckGo (Privacy)" , "Baidu (Chinese)", "Yandex (Russian)", "DuckDuckGo Lite (Privacy)"}; int n = settings.getInt("search", 1); @@ -259,6 +262,9 @@ public class SettingsActivity extends Activity { case 7: searchText.setText("Yandex"); break; + case 8: + searchText.setText("DuckDuckGo Lite"); + break; } } }); @@ -463,10 +469,9 @@ public class SettingsActivity extends Activity { Utils.createInformativeDialog( SettingsActivity.this, "Warning", - "Adobe Flash does not support Android 4.3 and will" + "Adobe Flash does not support Android 4.3 and will " + "crash the browser, please do not report crashes that occur if you enable flash."); } - } }); diff --git a/src/acr/browser/barebones/customwebview/CustomWebView.java b/src/acr/browser/barebones/customwebview/CustomWebView.java index bbea647..bf81a4d 100644 --- a/src/acr/browser/barebones/customwebview/CustomWebView.java +++ b/src/acr/browser/barebones/customwebview/CustomWebView.java @@ -2,7 +2,9 @@ package acr.browser.barebones.customwebview; import acr.browser.barebones.activities.BrowserActivity; import acr.browser.barebones.utilities.FinalVariables; +import android.annotation.SuppressLint; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Point; import android.util.DisplayMetrics; import android.view.Display; @@ -14,50 +16,63 @@ import android.view.WindowManager; import android.view.animation.Animation; import android.webkit.WebSettings; import android.webkit.WebView; +import android.webkit.WebSettings.LayoutAlgorithm; +import android.webkit.WebSettings.PluginState; +import android.webkit.WebSettings.RenderPriority; public final class CustomWebView extends WebView { - private float location; private boolean first = false; - final int API = FinalVariables.API; - final boolean showFullScreen = BrowserActivity.showFullScreen; + static final int API = FinalVariables.API; + public static boolean showFullScreen;; final View uBar = BrowserActivity.uBar; final Animation slideUp = BrowserActivity.slideUp; final Animation slideDown = BrowserActivity.slideDown; static Context CONTEXT; + static String defaultUser; + public WebSettings settings; public CustomWebView(Context context) { + super(context); + defaultUser = BrowserActivity.defaultUser; + showFullScreen = BrowserActivity.showFullScreen; mGestureDetector = new GestureDetector(context, new CustomGestureListener()); CONTEXT = context; - WebSettings settings = this.getSettings(); + settings = getSettings(); browserInitialization(context); - settingsInitialization(context, settings); + settingsInitialization(context); } + @SuppressWarnings("deprecation") public void browserInitialization(Context context) { - this.setDrawingCacheBackgroundColor(0x00000000); - this.setFocusableInTouchMode(true); - this.setFocusable(true); - this.setAnimationCacheEnabled(false); - this.setDrawingCacheEnabled(true); - this.setBackgroundColor(context.getResources().getColor( + setDrawingCacheBackgroundColor(0x00000000); + setFocusableInTouchMode(true); + setFocusable(true); + setAnimationCacheEnabled(false); + setDrawingCacheEnabled(true); + setBackgroundColor(context.getResources().getColor( android.R.color.white)); - this.setWillNotCacheDrawing(false); - this.setAlwaysDrawnWithCacheEnabled(true); - this.setScrollbarFadingEnabled(true); - this.setSaveEnabled(true); + if (API >= 16) { + getRootView().setBackground(null); + } else { + getRootView().setBackgroundDrawable(null); + } + setWillNotCacheDrawing(false); + setAlwaysDrawnWithCacheEnabled(true); + setScrollbarFadingEnabled(true); + setSaveEnabled(true); } + @SuppressLint("SetJavaScriptEnabled") @SuppressWarnings("deprecation") - public void settingsInitialization(Context context, WebSettings settings) { + public void settingsInitialization(Context context) { + SharedPreferences preferences = context.getSharedPreferences( + "settings", 0); settings.setDomStorageEnabled(true); settings.setAppCacheEnabled(true); settings.setAppCachePath(context.getFilesDir().getAbsolutePath() + "/cache"); - if (API < 18) { - settings.setLightTouchEnabled(true); - } settings.setAllowFileAccess(true); settings.setDatabaseEnabled(true); settings.setDatabasePath(context.getFilesDir().getAbsolutePath() @@ -68,54 +83,168 @@ public final class CustomWebView extends WebView { settings.setDisplayZoomControls(false); settings.setAllowContentAccess(true); } - } - @Override - public boolean onTouchEvent(MotionEvent event) { + if (preferences.getBoolean("java", true)) { + settings.setJavaScriptEnabled(true); + settings.setJavaScriptCanOpenWindowsAutomatically(true); + } - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: { - first = true; - if (API <= 10 && !hasFocus()) { - requestFocus(); + if (API < 14) { + switch (preferences.getInt("textsize", 3)) { + case 1: + settings.setTextSize(WebSettings.TextSize.LARGEST); + break; + case 2: + settings.setTextSize(WebSettings.TextSize.LARGER); + break; + case 3: + settings.setTextSize(WebSettings.TextSize.NORMAL); + break; + case 4: + settings.setTextSize(WebSettings.TextSize.SMALLER); + break; + case 5: + settings.setTextSize(WebSettings.TextSize.SMALLEST); + break; + } + + } else { + switch (preferences.getInt("textsize", 3)) { + case 1: + settings.setTextZoom(200); + break; + case 2: + settings.setTextZoom(150); + break; + case 3: + settings.setTextZoom(100); + break; + case 4: + settings.setTextZoom(75); + break; + case 5: + settings.setTextZoom(50); + break; } - location = event.getY(); + } + settings.setSupportMultipleWindows(preferences.getBoolean("newwindow", + true)); + + switch (preferences.getInt("enableflash", 0)) { + case 0: + break; + case 1: { + settings.setPluginState(PluginState.ON_DEMAND); break; } - case MotionEvent.ACTION_UP: { + case 2: { + settings.setPluginState(PluginState.ON); + break; + } + default: + break; + } + if (preferences.getBoolean("passwords", false)) { + if (API < 18) { + settings.setSavePassword(true); + } + settings.setSaveFormData(true); + } + if (API < 18) { + try { + settings.setRenderPriority(RenderPriority.HIGH); + } catch (SecurityException ignored) { - if (showFullScreen && first) { - if (uBar.isShown() && getScrollY() < 5) { - uBar.startAnimation(slideUp); - } else if ((event.getY() - location) > 20.0 && !uBar.isShown()) { - uBar.startAnimation(slideDown); - } else if ((event.getY() - location) < -20.0 && uBar.isShown()) { - uBar.startAnimation(slideUp); - } - first = false; } - break; } + settings.setGeolocationEnabled(preferences + .getBoolean("location", false)); + settings.setGeolocationDatabasePath(context.getFilesDir() + .getAbsolutePath()); + settings.setUseWideViewPort(preferences + .getBoolean("wideviewport", true)); + settings.setLoadWithOverviewMode(preferences.getBoolean("overviewmode", + true)); + + if (preferences.getBoolean("textreflow", false)) { + settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); + } else { + settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL); + } + + settings.setBlockNetworkImage(preferences.getBoolean("blockimages", + false)); + settings.setLoadsImagesAutomatically(true); + + switch (preferences.getInt("agentchoose", 1)) { + case 1: + getSettings().setUserAgentString(defaultUser); + break; + case 2: + getSettings().setUserAgentString( + FinalVariables.DESKTOP_USER_AGENT); + break; + case 3: + getSettings().setUserAgentString( + FinalVariables.MOBILE_USER_AGENT); + break; + case 4: + getSettings().setUserAgentString( + preferences.getString("userAgentString", defaultUser)); + break; } + } + + @Override + public boolean onTouchEvent(MotionEvent event) { mGestureDetector.onTouchEvent(event); return super.onTouchEvent(event); - } @Override protected void onWindowVisibilityChanged(int visibility) { if (API >= 11) { - this.setActivated(visibility == View.VISIBLE); + setActivated(visibility == View.VISIBLE); } - this.setEnabled(visibility == View.VISIBLE); + setEnabled(visibility == View.VISIBLE); super.onWindowVisibilityChanged(visibility); } private final GestureDetector mGestureDetector; private class CustomGestureListener extends SimpleOnGestureListener { - private final int SWIPE_THRESHOLD = 100; - private final int SWIPE_VELOCITY_THRESHOLD = 100; + final int SWIPE_THRESHOLD = 100; + final int SWIPE_VELOCITY_THRESHOLD = 100; + + @Override + public boolean onDown(MotionEvent e) { + first = true; + return super.onDown(e); + } + + @Override + public void onLongPress(MotionEvent e) { + if (BrowserActivity.currentId != -1) { + BrowserActivity.onLongClick(); + } + super.onLongPress(e); + } + + @Override + public boolean onScroll(MotionEvent e1, MotionEvent e2, + float distanceX, float distanceY) { + if (showFullScreen && first) { + if (uBar.isShown() && getScrollY() < 5) { + uBar.startAnimation(slideUp); + } else if (distanceY < -5 && !uBar.isShown()) { + uBar.startAnimation(slideDown); + } else if (distanceY > 5 && uBar.isShown()) { + uBar.startAnimation(slideUp); + } + first = false; + } + return super.onScroll(e1, e2, distanceX, distanceY); + } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, @@ -136,18 +265,17 @@ public final class CustomWebView extends WebView { width = size.x; } - if ((width - e1.getX() < width/12) || (e1.getX() < width/12)) { + if ((width - e1.getX() < width / 12) + || (e1.getX() < width / 12)) { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { - BrowserActivity.goBack(); - return false; + BrowserActivity.goBack(CustomWebView.this); } else { - BrowserActivity.goForward(); - return false; + BrowserActivity.goForward(CustomWebView.this); } } } @@ -156,7 +284,7 @@ public final class CustomWebView extends WebView { } catch (Exception exception) { exception.printStackTrace(); } - return false; + return super.onFling(e1, e2, velocityX, velocityY); } } diff --git a/src/acr/browser/barebones/customwebview/IncognitoWebView.java b/src/acr/browser/barebones/customwebview/IncognitoWebView.java index 57342d0..6e6d931 100644 --- a/src/acr/browser/barebones/customwebview/IncognitoWebView.java +++ b/src/acr/browser/barebones/customwebview/IncognitoWebView.java @@ -2,7 +2,9 @@ package acr.browser.barebones.customwebview; import acr.browser.barebones.activities.IncognitoModeActivity; import acr.browser.barebones.utilities.FinalVariables; +import android.annotation.SuppressLint; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Point; import android.util.DisplayMetrics; import android.view.Display; @@ -14,50 +16,63 @@ import android.view.WindowManager; import android.view.animation.Animation; import android.webkit.WebSettings; import android.webkit.WebView; +import android.webkit.WebSettings.LayoutAlgorithm; +import android.webkit.WebSettings.PluginState; +import android.webkit.WebSettings.RenderPriority; public final class IncognitoWebView extends WebView { - private float location; private boolean first = false; - final int API = FinalVariables.API; - final boolean showFullScreen = IncognitoModeActivity.showFullScreen; - final View uBar = IncognitoModeActivity.urlBar; + static final int API = FinalVariables.API; + public static boolean showFullScreen;; + final View uBar = IncognitoModeActivity.uBar; final Animation slideUp = IncognitoModeActivity.slideUp; final Animation slideDown = IncognitoModeActivity.slideDown; static Context CONTEXT; + static String defaultUser; + public WebSettings settings; public IncognitoWebView(Context context) { + super(context); + defaultUser = IncognitoModeActivity.defaultUser; + showFullScreen = IncognitoModeActivity.showFullScreen; mGestureDetector = new GestureDetector(context, new CustomGestureListener()); CONTEXT = context; - WebSettings settings = this.getSettings(); + settings = getSettings(); browserInitialization(context); - settingsInitialization(context, settings); + settingsInitialization(context); } + @SuppressWarnings("deprecation") public void browserInitialization(Context context) { - this.setDrawingCacheBackgroundColor(0x00000000); - this.setFocusableInTouchMode(true); - this.setFocusable(true); - this.setAnimationCacheEnabled(false); - this.setDrawingCacheEnabled(true); - this.setBackgroundColor(context.getResources().getColor( + setDrawingCacheBackgroundColor(0x00000000); + setFocusableInTouchMode(true); + setFocusable(true); + setAnimationCacheEnabled(false); + setDrawingCacheEnabled(true); + setBackgroundColor(context.getResources().getColor( android.R.color.white)); - this.setWillNotCacheDrawing(false); - this.setAlwaysDrawnWithCacheEnabled(true); - this.setScrollbarFadingEnabled(true); - this.setSaveEnabled(true); + if (API >= 16) { + getRootView().setBackground(null); + } else { + getRootView().setBackgroundDrawable(null); + } + setWillNotCacheDrawing(false); + setAlwaysDrawnWithCacheEnabled(true); + setScrollbarFadingEnabled(true); + setSaveEnabled(true); } + @SuppressLint("SetJavaScriptEnabled") @SuppressWarnings("deprecation") - public void settingsInitialization(Context context, WebSettings settings) { + public void settingsInitialization(Context context) { + SharedPreferences preferences = context.getSharedPreferences( + "settings", 0); settings.setDomStorageEnabled(true); settings.setAppCacheEnabled(true); settings.setAppCachePath(context.getFilesDir().getAbsolutePath() + "/cache"); - if (API < 18) { - settings.setLightTouchEnabled(true); - } settings.setAllowFileAccess(true); settings.setDatabaseEnabled(true); settings.setDatabasePath(context.getFilesDir().getAbsolutePath() @@ -68,54 +83,168 @@ public final class IncognitoWebView extends WebView { settings.setDisplayZoomControls(false); settings.setAllowContentAccess(true); } - } - @Override - public boolean onTouchEvent(MotionEvent event) { + if (preferences.getBoolean("java", true)) { + settings.setJavaScriptEnabled(true); + settings.setJavaScriptCanOpenWindowsAutomatically(true); + } - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: { - first = true; - if (API <= 10 && !hasFocus()) { - requestFocus(); + if (API < 14) { + switch (preferences.getInt("textsize", 3)) { + case 1: + settings.setTextSize(WebSettings.TextSize.LARGEST); + break; + case 2: + settings.setTextSize(WebSettings.TextSize.LARGER); + break; + case 3: + settings.setTextSize(WebSettings.TextSize.NORMAL); + break; + case 4: + settings.setTextSize(WebSettings.TextSize.SMALLER); + break; + case 5: + settings.setTextSize(WebSettings.TextSize.SMALLEST); + break; + } + + } else { + switch (preferences.getInt("textsize", 3)) { + case 1: + settings.setTextZoom(200); + break; + case 2: + settings.setTextZoom(150); + break; + case 3: + settings.setTextZoom(100); + break; + case 4: + settings.setTextZoom(75); + break; + case 5: + settings.setTextZoom(50); + break; } - location = event.getY(); + } + settings.setSupportMultipleWindows(preferences.getBoolean("newwindow", + true)); + + switch (preferences.getInt("enableflash", 0)) { + case 0: + break; + case 1: { + settings.setPluginState(PluginState.ON_DEMAND); break; } - case MotionEvent.ACTION_UP: { + case 2: { + settings.setPluginState(PluginState.ON); + break; + } + default: + break; + } + if (preferences.getBoolean("passwords", false)) { + if (API < 18) { + settings.setSavePassword(true); + } + settings.setSaveFormData(true); + } + if (API < 18) { + try { + settings.setRenderPriority(RenderPriority.HIGH); + } catch (SecurityException ignored) { - if (showFullScreen && first) { - if (uBar.isShown() && getScrollY() < 5) { - uBar.startAnimation(slideUp); - } else if ((event.getY() - location) > 20.0 && !uBar.isShown()) { - uBar.startAnimation(slideDown); - } else if ((event.getY() - location) < -20.0 && uBar.isShown()) { - uBar.startAnimation(slideUp); - } - first = false; } - break; } + settings.setGeolocationEnabled(preferences + .getBoolean("location", false)); + settings.setGeolocationDatabasePath(context.getFilesDir() + .getAbsolutePath()); + settings.setUseWideViewPort(preferences + .getBoolean("wideviewport", true)); + settings.setLoadWithOverviewMode(preferences.getBoolean("overviewmode", + true)); + + if (preferences.getBoolean("textreflow", false)) { + settings.setLayoutAlgorithm(LayoutAlgorithm.NARROW_COLUMNS); + } else { + settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL); } - return mGestureDetector.onTouchEvent(event) - || super.onTouchEvent(event); + settings.setBlockNetworkImage(preferences.getBoolean("blockimages", + false)); + settings.setLoadsImagesAutomatically(true); + + switch (preferences.getInt("agentchoose", 1)) { + case 1: + getSettings().setUserAgentString(defaultUser); + break; + case 2: + getSettings().setUserAgentString( + FinalVariables.DESKTOP_USER_AGENT); + break; + case 3: + getSettings().setUserAgentString( + FinalVariables.MOBILE_USER_AGENT); + break; + case 4: + getSettings().setUserAgentString( + preferences.getString("userAgentString", defaultUser)); + break; + } + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + mGestureDetector.onTouchEvent(event); + return super.onTouchEvent(event); } @Override protected void onWindowVisibilityChanged(int visibility) { if (API >= 11) { - this.setActivated(visibility == View.VISIBLE); + setActivated(visibility == View.VISIBLE); } - this.setEnabled(visibility == View.VISIBLE); + setEnabled(visibility == View.VISIBLE); super.onWindowVisibilityChanged(visibility); } private final GestureDetector mGestureDetector; private class CustomGestureListener extends SimpleOnGestureListener { - private final int SWIPE_THRESHOLD = 100; - private final int SWIPE_VELOCITY_THRESHOLD = 100; + final int SWIPE_THRESHOLD = 100; + final int SWIPE_VELOCITY_THRESHOLD = 100; + + @Override + public boolean onDown(MotionEvent e) { + first = true; + return super.onDown(e); + } + + @Override + public void onLongPress(MotionEvent e) { + if (IncognitoModeActivity.currentId != -1) { + IncognitoModeActivity.onLongClick(); + } + super.onLongPress(e); + } + + @Override + public boolean onScroll(MotionEvent e1, MotionEvent e2, + float distanceX, float distanceY) { + if (showFullScreen && first) { + if (uBar.isShown() && getScrollY() < 5) { + uBar.startAnimation(slideUp); + } else if (distanceY < -5 && !uBar.isShown()) { + uBar.startAnimation(slideDown); + } else if (distanceY > 5 && uBar.isShown()) { + uBar.startAnimation(slideUp); + } + first = false; + } + return super.onScroll(e1, e2, distanceX, distanceY); + } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, @@ -136,18 +265,17 @@ public final class IncognitoWebView extends WebView { width = size.x; } - if ((width - e1.getX() < width/12) || (e1.getX() < width/12)) { + if ((width - e1.getX() < width / 12) + || (e1.getX() < width / 12)) { float diffY = e2.getY() - e1.getY(); float diffX = e2.getX() - e1.getX(); if (Math.abs(diffX) > Math.abs(diffY)) { if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { if (diffX > 0) { - IncognitoModeActivity.goBack(); - return false; + IncognitoModeActivity.goBack(IncognitoWebView.this); } else { - IncognitoModeActivity.goForward(); - return false; + IncognitoModeActivity.goForward(IncognitoWebView.this); } } } @@ -156,7 +284,7 @@ public final class IncognitoWebView extends WebView { } catch (Exception exception) { exception.printStackTrace(); } - return false; + return super.onFling(e1, e2, velocityX, velocityY); } } diff --git a/src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java b/src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java index 36e28e2..9e025c2 100644 --- a/src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java +++ b/src/acr/browser/barebones/incognitoclasses/IncognitoChromeClient.java @@ -136,8 +136,9 @@ public class IncognitoChromeClient extends WebChromeClient { if (mCustomView == null && mCustomViewCallback == null) { return; } - mCustomView = null; + mCustomView.setKeepScreenOn(false); + mCustomView = null; IncognitoModeActivity.onHideCustomView(fullScreenContainer, mCustomViewCallback, orientation); } diff --git a/src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java b/src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java index 5e1798e..6f8855f 100644 --- a/src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java +++ b/src/acr/browser/barebones/incognitoclasses/IncognitoLongClickListener.java @@ -8,7 +8,7 @@ public class IncognitoLongClickListener implements OnLongClickListener{ @Override public boolean onLongClick(View v) { - return IncognitoModeActivity.onLongClick(v.getId()); + return IncognitoModeActivity.onLongClick(); } } diff --git a/src/acr/browser/barebones/utilities/FinalVariables.java b/src/acr/browser/barebones/utilities/FinalVariables.java index 0edc8d7..e59417c 100644 --- a/src/acr/browser/barebones/utilities/FinalVariables.java +++ b/src/acr/browser/barebones/utilities/FinalVariables.java @@ -15,6 +15,7 @@ public class FinalVariables { public static final String GOOGLE_SEARCH = "https://www.google.com/search?client=lightning&q="; public static final String BING_SEARCH = "http://www.bing.com/search?q="; public static final String DUCK_SEARCH = "https://duckduckgo.com/?t=lightning&q="; + public static final String DUCK_LITE_SEARCH = "https://duckduckgo.com/lite/?q="; public static final String STARTPAGE_SEARCH = "https://startpage.com/do/metasearch.pl?language=english&cat=web&query="; public static final String HOMEPAGE = "https://www.google.com/"; public static final String BAIDU_SEARCH = "http://www.baidu.com/s?wd="; diff --git a/src/acr/browser/barebones/utilities/Utils.java b/src/acr/browser/barebones/utilities/Utils.java index 0d40dfe..86797b8 100644 --- a/src/acr/browser/barebones/utilities/Utils.java +++ b/src/acr/browser/barebones/utilities/Utils.java @@ -7,6 +7,7 @@ import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; + import acr.browser.barebones.databases.DatabaseHandler; import acr.browser.barebones.databases.HistoryItem; import android.annotation.SuppressLint; @@ -27,6 +28,7 @@ import android.os.Environment; import android.provider.Browser; import android.util.Log; import android.webkit.URLUtil; +import android.widget.EditText; import android.widget.Toast; public class Utils { diff --git a/src/acr/browser/barebones/webviewclasses/CustomChromeClient.java b/src/acr/browser/barebones/webviewclasses/CustomChromeClient.java index 72c68d2..b816588 100644 --- a/src/acr/browser/barebones/webviewclasses/CustomChromeClient.java +++ b/src/acr/browser/barebones/webviewclasses/CustomChromeClient.java @@ -136,8 +136,9 @@ public class CustomChromeClient extends WebChromeClient { if (mCustomView == null && mCustomViewCallback == null) { return; } - mCustomView = null; + mCustomView.setKeepScreenOn(false); + mCustomView = null; BrowserActivity.onHideCustomView(fullScreenContainer, mCustomViewCallback, orientation); } diff --git a/src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java b/src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java index 959d446..1313fed 100644 --- a/src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java +++ b/src/acr/browser/barebones/webviewclasses/WebPageLongClickListener.java @@ -8,7 +8,7 @@ public class WebPageLongClickListener implements OnLongClickListener{ @Override public boolean onLongClick(View v) { - return BrowserActivity.onLongClick(v.getId()); + return BrowserActivity.onLongClick(); } }