Fix the styling of the About tabs and AppBar.
authorSoren Stoutner <soren@stoutner.com>
Fri, 10 Jun 2016 05:04:45 +0000 (22:04 -0700)
committerSoren Stoutner <soren@stoutner.com>
Fri, 10 Jun 2016 05:04:45 +0000 (22:04 -0700)
21 files changed:
.idea/dictionaries/soren.xml
app/src/free/assets/about_privacy_policy.html
app/src/free/res/layout/main_webview.xml
app/src/main/AndroidManifest.xml
app/src/main/assets/about_changelog.html
app/src/main/assets/about_contributors.html
app/src/main/assets/about_license.html
app/src/main/assets/about_links.html
app/src/main/assets/about_permissions.html
app/src/main/assets/about_privacy_policy.html
app/src/main/java/com/stoutner/privacybrowser/AboutActivity.java
app/src/main/java/com/stoutner/privacybrowser/MainWebViewActivity.java
app/src/main/res/layout/about_coordinatorlayout.xml [new file with mode: 0644]
app/src/main/res/layout/about_linearlayout.xml [deleted file]
app/src/main/res/layout/about_tab_version.xml
app/src/main/res/layout/coordinator_layout.xml [deleted file]
app/src/main/res/layout/main_coordinatorlayout.xml [new file with mode: 0644]
app/src/main/res/layout/main_webview.xml
app/src/main/res/values-v19/styles.xml
app/src/main/res/values/styles.xml
app/src/main/res/xml/preferences.xml

index 783d740d5cee229c4f9dbd6264b4bc367d5cd5fb..e7d27c915aac91e0dc4d3d3b367e1da6eaca6084 100644 (file)
@@ -3,12 +3,14 @@
     <words>
       <w>androidversion</w>
       <w>anonymized</w>
     <words>
       <w>androidversion</w>
       <w>anonymized</w>
+      <w>appbarlayout</w>
       <w>aren</w>
       <w>bebdb</w>
       <w>buildapi</w>
       <w>buildversion</w>
       <w>chromeversion</w>
       <w>commitdiff</w>
       <w>aren</w>
       <w>bebdb</w>
       <w>buildapi</w>
       <w>buildversion</w>
       <w>chromeversion</w>
       <w>commitdiff</w>
+      <w>coordinatorlayout</w>
       <w>eadd</w>
       <w>exynos</w>
       <w>intl</w>
       <w>eadd</w>
       <w>exynos</w>
       <w>intl</w>
@@ -23,6 +25,7 @@
       <w>securitypatch</w>
       <w>snackbar</w>
       <w>snackbars</w>
       <w>securitypatch</w>
       <w>snackbar</w>
       <w>snackbars</w>
+      <w>tablayout</w>
       <w>techrepublic</w>
       <w>textview</w>
       <w>webkitversion</w>
       <w>techrepublic</w>
       <w>textview</w>
       <w>webkitversion</w>
index 3b61cfe53e5b2886926a1af205e8a70d5647e61c..4d88a0ff0e5b3f81ed97021a97f9bec35d107017 100644 (file)
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
+<head>
+    <style>
+        h3 {
+        color: 0D4781;
+        }
+
+        strong {
+        color: B71C1C;
+        }
+
+        item {
+        color: 1976D2;
+        font-weight: bold;
+        }
+    </style>
+</head>
+
 <body>
 <body>
-<h3><font color="0D4781">Privacy Browser Free</font></h3>
+<h3>Privacy Browser Free</h3>
 <p><strong>Privacy Browser Free does not collect any user information</strong>.</p>
 
 <hr />
 
 <p><strong>Privacy Browser Free does not collect any user information</strong>.</p>
 
 <hr />
 
-<h3><font color="0D4781">Advertisements</font></h3>
+<h3>Advertisements</h3>
 <p>Privacy Browser Free displays a banner add across the bottom of the screen using the Google's AdMob network,
     which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Note that unless you have <a href="http://www.techrepublic.com/article/pro-tip-how-to-opt-out-of-interest-based-ads-on-your-android-phone/">opted out of interest-based ads</a>,
     the advertiser will receive a copy of your unique device advertising ID, which allows them to track your device across apps.
     AdMob reports <em>anonymized summaries</em> of the following information. <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
 <p>Privacy Browser Free displays a banner add across the bottom of the screen using the Google's AdMob network,
     which has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Note that unless you have <a href="http://www.techrepublic.com/article/pro-tip-how-to-opt-out-of-interest-based-ads-on-your-android-phone/">opted out of interest-based ads</a>,
     the advertiser will receive a copy of your unique device advertising ID, which allows them to track your device across apps.
     AdMob reports <em>anonymized summaries</em> of the following information. <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
-    <li><strong><font color="0D4781">Total impressions</font></strong></li>
-    <li><strong><font color="0D4781">Total clicks</font></strong></li>
-    <li><strong><font color="0D4781">Platforms</font></strong> (eg. high-end mobile devices, tablets)</li>
-    <li><strong><font color="0D4781">Activity by country</font></strong></li>
+    <li><item>Total impressions</item></li>
+    <li><item>Total clicks</item></li>
+    <li><item>Platforms</item> (eg. high-end mobile devices, tablets)</li>
+    <li><item>Activity by country</item></li>
 </ul>
 
 <hr />
 
 </ul>
 
 <hr />
 
-<h3><font color="0D4781">Google Play Ratings</font></h3>
+<h3>Google Play Ratings</h3>
 <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
 <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
-    <li><strong><font color="0D4781">Country</font></strong></li>
-    <li><strong><font color="0D4781">Language</font></strong></li>
-    <li><strong><font color="0D4781">App version</font></strong></li>
-    <li><strong><font color="0D4781">Android version</font></strong></li>
-    <li><strong><font color="0D4781">Device</font></strong> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
-    <li><strong><font color="0D4781">Tablets</font></strong> (eg. Tablets 10" and above)</li>
+    <li><item>Country</item></li>
+    <li><item>Language</item></li>
+    <li><item>App version</item></li>
+    <li><item>Android version</item></li>
+    <li><item>Device</item> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+    <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
 </ul>
 
 <hr />
 
 </ul>
 
 <hr />
 
-<h3><font color="0D4781">Google Play Reviews</font></h3>
+<h3>Google Play Reviews</h3>
 <p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
     Google provides some or all of the following information to the developer.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
 <p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
     Google provides some or all of the following information to the developer.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
-    <li><strong><font color="0D4781">Version code</font></strong> (eg. 7)</li>
-    <li><strong><font color="0D4781">Version name</font></strong> (eg. 1.6)</li>
-    <li><strong><font color="0D4781">Android version</font></strong> (eg. Android 5.1)</li>
-    <li><strong><font color="0D4781">Device</font></strong> (eg. Galaxy S6 Edge+ [zenlte])</li>
-    <li><strong><font color="0D4781">Manufacturer</font></strong> (eg. Samsung)</li>
-    <li><strong><font color="0D4781">Device type</font></strong> (eg. Phone)</li>
-    <li><strong><font color="0D4781">CPU make</font></strong> (eg. Samsung)</li>
-    <li><strong><font color="0D4781">CPU model</font></strong> (eg. Exynos 7420)</li>
-    <li><strong><font color="0D4781">Screen density</font></strong> (eg. 560 dpi)</li>
-    <li><strong><font color="0D4781">Screen size</font></strong> (eg. 2560 x 1440)</li>
-    <li><strong><font color="0D4781">RAM</font></strong> (eg. 4096 MB)</li>
-    <li><strong><font color="0D4781">Native platform</font></strong> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
-    <li><strong><font color="0D4781">OpenGL ES version</font></strong> (eg. 3.1)</li>
-    <li><strong><font color="0D4781">Device language</font></strong> (eg. English)</li>
+    <li><item>Version code</item> (eg. 7)</li>
+    <li><item>Version name</item> (eg. 1.6)</li>
+    <li><item>Android version</item> (eg. Android 5.1)</li>
+    <li><item>Device</item> (eg. Galaxy S6 Edge+ [zenlte])</li>
+    <li><item>Manufacturer</item> (eg. Samsung)</li>
+    <li><item>Device type</item> (eg. Phone)</li>
+    <li><item>CPU make</item> (eg. Samsung)</li>
+    <li><item>CPU model</item> (eg. Exynos 7420)</li>
+    <li><item>Screen density</item> (eg. 560 dpi)</li>
+    <li><item>Screen size</item> (eg. 2560 x 1440)</li>
+    <li><item>RAM</item> (eg. 4096 MB)</li>
+    <li><item>Native platform</item> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+    <li><item>OpenGL ES version</item> (eg. 3.1)</li>
+    <li><item>Device language</item> (eg. English)</li>
 </ul>
 
 <hr />
 </ul>
 
 <hr />
-<p style="text-align: center;">Revision 1.2, 3 June 2016</p>
+<p style="text-align: center;"><em>Revision 1.2, 3 June 2016</em></p>
 </body>
 </html>
\ No newline at end of file
 </body>
 </html>
\ No newline at end of file
index 1c05c00f6f19bf1f14c9c295819e4d57cdcf2fb2..17d0206030af2be69f41b3000dc2685de8c2e808 100644 (file)
   You should have received a copy of the GNU General Public License
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
   You should have received a copy of the GNU General Public License
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
-<!-- android:layout_martinTop="?attr/actionBarSize" moves adRelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView. -->
+<!-- android:layout_martinTop="?attr/actionBarSize" moves adRelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView.
+  android:layout_weight="1" sets the RelativeLayout to fill the rest of the screen because it is encapsulated in a LinearLayout with android:orientation="vertical"-->
 <RelativeLayout
     android:id="@+id/adRelativeLayout"
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:ads="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
 <RelativeLayout
     android:id="@+id/adRelativeLayout"
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:ads="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_marginTop="?attr/actionBarSize"
+    android:layout_height="0dp"
+    android:layout_weight="1"
     tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
     tools:showIn="@layout/coordinator_layout">
 
     tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
     tools:showIn="@layout/coordinator_layout">
 
@@ -52,6 +53,6 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:focusable="true"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:focusable="true"
-            android:focusableInTouchMode="true"/>
+            android:focusableInTouchMode="true" />
     </android.support.v4.widget.SwipeRefreshLayout>
 </RelativeLayout>
\ No newline at end of file
     </android.support.v4.widget.SwipeRefreshLayout>
 </RelativeLayout>
\ No newline at end of file
index 33ae421bf0347dab1852ed679349bf0be5730b50..6c83697d3b91c15421eab339026061e4d93a7a39 100644 (file)
@@ -31,7 +31,7 @@
     <application
         android:label="@string/privacy_browser"
         android:icon="@mipmap/privacy_browser"
     <application
         android:label="@string/privacy_browser"
         android:icon="@mipmap/privacy_browser"
-        android:theme="@style/AppTheme"
+        android:theme="@style/PrivacyBrowser"
         android:allowBackup="false"
         android:fullBackupContent="false" >
 
         android:allowBackup="false"
         android:fullBackupContent="false" >
 
@@ -42,7 +42,7 @@
         <activity
             android:name=".MainWebViewActivity"
             android:label="@string/privacy_browser"
         <activity
             android:name=".MainWebViewActivity"
             android:label="@string/privacy_browser"
-            android:theme="@style/AppTheme.NoActionBar"
+            android:theme="@style/PrivacyBrowser.MainWebView"
             android:configChanges="orientation|screenSize"
             android:launchMode="singleTask"
             android:persistableMode="persistNever" >
             android:configChanges="orientation|screenSize"
             android:launchMode="singleTask"
             android:persistableMode="persistNever" >
@@ -67,6 +67,7 @@
         <activity
             android:name=".SettingsActivity"
             android:label="@string/privacy_browser_settings"
         <activity
             android:name=".SettingsActivity"
             android:label="@string/privacy_browser_settings"
+            android:theme="@style/PrivacyBrowser.Settings"
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
             android:persistableMode="persistNever" >
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
             android:persistableMode="persistNever" >
@@ -82,6 +83,7 @@
         <activity
             android:name=".AboutActivity"
             android:label="@string/about_privacy_browser"
         <activity
             android:name=".AboutActivity"
             android:label="@string/about_privacy_browser"
+            android:theme="@style/PrivacyBrowser.About"
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
             android:persistableMode="persistNever" >
             android:parentActivityName=".MainWebViewActivity"
             android:configChanges="orientation|screenSize"
             android:persistableMode="persistNever" >
index 2d90a7e72a30b78fe32f35e9bf1e05d4fd9462b8..c927cd9b95333bb1638b27c66fa06ecbd0fc1195 100644 (file)
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
+<head>
+    <style>
+        h3 {
+            color: 0D4781;
+        }
+    </style>
+</head>
+
 <body>
 <body>
-<h4>1.6 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=151e4550065da8e740e8e3bd414ec30ae2a18c33">11 May 2016</a></font></h4>
+<h3>1.6</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=151e4550065da8e740e8e3bd414ec30ae2a18c33">11 May 2016</a> - minimum API 15, target API 23</p>
 <ul>
     <li>Add a setting to <a href="https://redmine.stoutner.com/issues/4">customize the search URLs</a>.</li>
     <li>Add a setting to <a href="https://redmine.stoutner.com/issues/3">customize the browser’s user agent</a>.</li>
 <ul>
     <li>Add a setting to <a href="https://redmine.stoutner.com/issues/4">customize the search URLs</a>.</li>
     <li>Add a setting to <a href="https://redmine.stoutner.com/issues/3">customize the browser’s user agent</a>.</li>
 
 <hr />
 
 
 <hr />
 
-<h4>1.5 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=b0a048867d5582bc693ba8699a75aa93b4fa1b69">5 May 2016</a></font></h4>
+<h3>1.5</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=b0a048867d5582bc693ba8699a75aa93b4fa1b69">5 May 2016</a> - minimum API 15, target API 23</p>
 <ul>
     <li>Add the option to disable swipe to refresh so that certain websites, like Google Maps, will function correctly.</li>
 </ul>
 
 <hr />
 
 <ul>
     <li>Add the option to disable swipe to refresh so that certain websites, like Google Maps, will function correctly.</li>
 </ul>
 
 <hr />
 
-<h4>1.4 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=58e6c22da860871eadd1cbf214a30e88ced4f19e">28 April 2016</a></font></h4>
+<h3>1.4</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=58e6c22da860871eadd1cbf214a30e88ced4f19e">28 April 2016</a> - minimum API 15, target API 23</p>
 <ul>
     <li>Add controls for <a href="https://redmine.stoutner.com/issues/21">third-party cookies</a>.</li>
     <li>Fix full screen video playback.</li>
 <ul>
     <li>Add controls for <a href="https://redmine.stoutner.com/issues/21">third-party cookies</a>.</li>
     <li>Fix full screen video playback.</li>
 
 <hr />
 
 
 <hr />
 
-<h4>1.3 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=4f704be746c00c0a29a52c28646e6d7cf2f9c53c">7 April 2016</a></font></h4>
+<h3>1.3</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=4f704be746c00c0a29a52c28646e6d7cf2f9c53c">7 April 2016</a> - minimum API 15, target API 23</p>
 <ul>
     <li>Create a <a href="https://redmine.stoutner.com/issues/17">navigation drawer</a>.</li>
 </ul>
 
 <hr />
 
 <ul>
     <li>Create a <a href="https://redmine.stoutner.com/issues/17">navigation drawer</a>.</li>
 </ul>
 
 <hr />
 
-<h4>1.2 <font color="0D4781">- minimum API 15, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 March 2016</a></font></h4>
+<h3>1.2</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=bde6908fee004715f0125ab2d51016dd63a956f4">23 March 2016</a> - minimum API 15, target API 23</p>
 <ul>
     <li>Update launcher icon to make it bigger.</li>
     <li>Replace all toast messages with <a href="https://redmine.stoutner.com/issues/12">snackbars</a>.</li>
 <ul>
     <li>Update launcher icon to make it bigger.</li>
     <li>Replace all toast messages with <a href="https://redmine.stoutner.com/issues/12">snackbars</a>.</li>
 
 <hr />
 
 
 <hr />
 
-<h4>1.1 <font color="0D4781">- minimum API 10, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 March 2016</a></font></h4>
+<h3>1.1</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=f56d4111a627bebdb7f181da062253b3e6145381">9 March 2016</a> - minimum API 10, target API 23</p>
 <ul>
     <li>Separate the standard and the free flavors so that Privacy Browser builds correctly on F-Droid.</li>
 </ul>
 
 <hr />
 
 <ul>
     <li>Separate the standard and the free flavors so that Privacy Browser builds correctly on F-Droid.</li>
 </ul>
 
 <hr />
 
-<h4>1.0 <font color="0D4781">- minimum API 10, target API 23 - released <a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6f7130bc4218755bea242a2108e4c4ad6f63dcf9">24 Feb 2016</a></font></h4>
+<h3>1.0</h3>
+<p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=commitdiff;h=6f7130bc4218755bea242a2108e4c4ad6f63dcf9">24 Feb 2016</a> - minimum API 10, target API 23</p>
 <ul>
     <li>Toggle JavaScript, DOM storage, and cookies.</li>
     <li>Set default enabled status for JavaScript, DOM storage, and cookies.</li>
 <ul>
     <li>Toggle JavaScript, DOM storage, and cookies.</li>
     <li>Set default enabled status for JavaScript, DOM storage, and cookies.</li>
index 68fbfacacc157645c780ecfd2469c494bbf13903..0c13f6d88f6ab5c0d8ce96b468c60cdc5c93e987 100644 (file)
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
+<head>
+    <style>
+        h3 {
+        color: 0D4781;
+        }
+    </style>
+</head>
+
 <body>
 <body>
+<h3>Principle Developers</h3>
 <p>Privacy Browser is primarily developed by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
 <p>Privacy Browser is primarily developed by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
+<hr />
+
+<h3>Contributors</h3>
 <p>Contributors are welcome to submit both <a href="https://www.stoutner.com/privacy-browser/contributors/">code and translations</a>.</p>
 </body>
 </html>
\ No newline at end of file
 <p>Contributors are welcome to submit both <a href="https://www.stoutner.com/privacy-browser/contributors/">code and translations</a>.</p>
 </body>
 </html>
\ No newline at end of file
index 2322c4eff2ea8f4985e807507651f410e64a1dd0..8663c61355c716bb5f6f00b19265214b6aabe43e 100644 (file)
 
 <html>
 <head>
 
 <html>
 <head>
-<style>
-img.center {
-    vertical-align: middle;
-}
-</style>
+    <style>
+        h3 {
+            color: 0D4781;
+        }
+
+        img.center {
+            vertical-align: middle;
+        }
+
+        img.left {
+            float: left;
+        }
+    </style>
 </head>
 <body>
 </head>
 <body>
-<h3><font color="0D4781">Copyright</font></h3>
+<h3>Copyright</h3>
 <p>Privacy Browser is copyright &copy; 2015-2016 by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
 <hr />
 
 <p>Privacy Browser is copyright &copy; 2015-2016 by <a href="mailto:soren@stoutner.com">Soren Stoutner</a>.</p>
 
 <hr />
 
-<h3><font color="0D4781">License</font></h3>
+<h3>License</h3>
 <p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.
     The full text of the license is at the bottom of this document.</p>
 
 <hr/>
 
 <p>Privacy Browser is released under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3+ license</a>.
     The full text of the license is at the bottom of this document.</p>
 
 <hr/>
 
-<h3><font color="0D4781">Attributions</font></h3>
-
+<h3>Attributions</h3>
 <p>The icons in Privacy Browser come from the Android Material icon set, which is released under the <a href=https://creativecommons.org/licenses/by/4.0/>CC-BY license</a>.</p>
 
 <p>The icons in Privacy Browser come from the Android Material icon set, which is released under the <a href=https://creativecommons.org/licenses/by/4.0/>CC-BY license</a>.</p>
 
-<p><img src="images/privacy_browser.png" height="32" width="32">
-    <img src="images/privacy_browser_free.png" height="32" width="32">
-    <img src="images/warning.png" height="32" width="32">
-    <img src="images/javascript_enabled.png" height="32" width="32">
+<p><img class="left" src="images/privacy_browser.png" height="32" width="32">
+    <img class="left" src="images/privacy_browser_free.png" height="32" width="32">
+    <img class="left" src="images/warning.png" height="32" width="32">
+    <img class="left" src="images/javascript_enabled.png" height="32" width="32">
     are derived from ic_security and ic_language. Modifications were made by Soren Stoutner in 2016.</p>
 
 <p><img class="center" src="images/ic_language.png" height="32" width="32"> ic_language.</p>
     are derived from ic_security and ic_language. Modifications were made by Soren Stoutner in 2016.</p>
 
 <p><img class="center" src="images/ic_language.png" height="32" width="32"> ic_language.</p>
@@ -66,7 +73,7 @@ img.center {
 
 <hr/>
 
 
 <hr/>
 
-<h3><font color="0D4781">GNU General Public License</font></h3>
+<h3>GNU General Public License</h3>
 <p>Version 3, 29 June 2007</p>
 
 <p>Copyright &copy; 2007 Free Software Foundation, Inc.
 <p>Version 3, 29 June 2007</p>
 
 <p>Copyright &copy; 2007 Free Software Foundation, Inc.
index a02225b428aecf1cde02c136d042ac6b6f65962e..856bf4cdaa1769adf3cf4d105d06c1b0c0180da8 100644 (file)
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
+<head>
+    <style>
+        h3 {
+        color: 0D4781;
+        }
+    </style>
+</head>
+
 <body>
 <body>
-<p>More information related to Privacy Browser is available on the website.</p>
+<h3>Websites</h3>
 
 <ul>
 
 <ul>
-    <li><a href="https://redmine.stoutner.com/projects/privacy-browser/issues">Bug Tracker and Feature Requests</a>.</li>
-    <li><a href="https://redmine.stoutner.com/projects/privacy-browser/boards">Forum</a>.</li>
-    <li><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">GitWeb</a>.</li>
+    <li><p><a href="https://redmine.stoutner.com/projects/privacy-browser/issues">Bug Tracker and Feature Requests</a>.</p></li>
+    <li><p><a href="https://redmine.stoutner.com/projects/privacy-browser/boards">Forum</a>.</p></li>
+    <li><p><a href="https://git.stoutner.com/?p=PrivacyBrowser.git;a=summary">GitWeb</a>.</p></li>
 </ul>
 </body>
 </html>
\ No newline at end of file
 </ul>
 </body>
 </html>
\ No newline at end of file
index 92af0dd70d2e31787d0a7e0a0917b7fa241c03b8..7e8d921b91c63406c44c0c58073172bebc7b4fda 100644 (file)
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
-<body>
-<h2>Privacy Browser uses the following permissions.</h2>
+<head>
+    <style>
+        h3 {
+            color: 0D4781;
+        }
+    </style>
+</head>
 
 
-<h3><font color="0D4781">Have full network access (<a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a>)</font></h3>
+<body>
+<h3>Have full network access</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INTERNET">android.permission.INTERNET</a></p>
 <p>Required for the WebView to access the internet.  Without this permission, Privacy Browser would be “No Browser: Protecting Your Privacy by Staying Completely Off the Internet”.</p>
 
 <p>Required for the WebView to access the internet.  Without this permission, Privacy Browser would be “No Browser: Protecting Your Privacy by Staying Completely Off the Internet”.</p>
 
-<h3><font color="0D4781">Install shortcuts (<a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a>)</font></h3>
+<hr />
+
+<h3>Install shortcuts</h3>
+<p><a href="https://developer.android.com/reference/android/Manifest.permission.html#INSTALL_SHORTCUT">com.android.launcher.permission.INSTALL_SHORTCUT</a></p>
 <p>Required to add shortcuts for websites to the launcher desktop.</p>
 </body>
 </html>
\ No newline at end of file
 <p>Required to add shortcuts for websites to the launcher desktop.</p>
 </body>
 </html>
\ No newline at end of file
index 352c16389507f3c48d141b218d3cd081a0436607..e4e1e1067acba25b376f020c8d0f1a600461ea51 100644 (file)
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <html>
+<head>
+    <style>
+        h3 {
+            color: 0D4781;
+        }
+
+        strong {
+            color: B71C1C;
+        }
+
+        item {
+            color: 1976D2;
+            font-weight: bold;
+        }
+    </style>
+</head>
+
 <body>
 <body>
-<h3><font color="0D4781">Privacy Browser</font></h3>
+<h3>Privacy Browser</h3>
 <p><strong>Privacy Browser does not collect any user information</strong>.</p>
 
 <hr />
 
 <p><strong>Privacy Browser does not collect any user information</strong>.</p>
 
 <hr />
 
-<h3><font color="0D4781">Google Play Ratings</font></h3>
+<h3>Google Play Ratings</h3>
 <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
 <p>Google Play has its <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     Google provides developers with <em>anonymized summaries</em> of the following information related to user ratings.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
-    <li><strong><font color="0D4781">Country</font></strong></li>
-    <li><strong><font color="0D4781">Language</font></strong></li>
-    <li><strong><font color="0D4781">App version</font></strong></li>
-    <li><strong><font color="0D4781">Android version</font></strong></li>
-    <li><strong><font color="0D4781">Device</font></strong> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
-    <li><strong><font color="0D4781">Tablets</font></strong> (eg. Tablets 10" and above)</li>
+    <li><item>Country</item></li>
+    <li><item>Language</item></li>
+    <li><item>App version</item></li>
+    <li><item>Android version</item></li>
+    <li><item>Device</item> (eg. Google Nexus 5X, Samsung Galaxy Note3)</li>
+    <li><item>Tablets</item> (eg. Tablets 10" and above)</li>
 </ul>
 
 <hr />
 
 </ul>
 
 <hr />
 
-<h3><font color="0D4781">Google Play Reviews</font></h3>
+<h3>Google Play Reviews</h3>
 <p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
     Google provides some or all of the following information to the developer.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
 <p>Google Play has it <a href="https://www.google.com/intl/en/policies/privacy/">own privacy policy</a>.
     In addition to the name of the reviewer, the rating, and the text of the review (which are all available publicly),
     Google provides some or all of the following information to the developer.
     <strong>Stoutner may use this information for any purpose</strong>.</p>
 <ul>
-    <li><strong><font color="0D4781">Version code</font></strong> (eg. 7)</li>
-    <li><strong><font color="0D4781">Version name</font></strong> (eg. 1.6)</li>
-    <li><strong><font color="0D4781">Android version</font></strong> (eg. Android 5.1)</li>
-    <li><strong><font color="0D4781">Device</font></strong> (eg. Galaxy S6 Edge+ [zenlte])</li>
-    <li><strong><font color="0D4781">Manufacturer</font></strong> (eg. Samsung)</li>
-    <li><strong><font color="0D4781">Device type</font></strong> (eg. Phone)</li>
-    <li><strong><font color="0D4781">CPU make</font></strong> (eg. Samsung)</li>
-    <li><strong><font color="0D4781">CPU model</font></strong> (eg. Exynos 7420)</li>
-    <li><strong><font color="0D4781">Screen density</font></strong> (eg. 560 dpi)</li>
-    <li><strong><font color="0D4781">Screen size</font></strong> (eg. 2560 x 1440)</li>
-    <li><strong><font color="0D4781">RAM</font></strong> (eg. 4096 MB)</li>
-    <li><strong><font color="0D4781">Native platform</font></strong> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
-    <li><strong><font color="0D4781">OpenGL ES version</font></strong> (eg. 3.1)</li>
-    <li><strong><font color="0D4781">Device language</font></strong> (eg. English)</li>
+    <li><item>Version code</item> (eg. 7)</li>
+    <li><item>Version name</item> (eg. 1.6)</li>
+    <li><item>Android version</item> (eg. Android 5.1)</li>
+    <li><item>Device</item> (eg. Galaxy S6 Edge+ [zenlte])</li>
+    <li><item>Manufacturer</item> (eg. Samsung)</li>
+    <li><item>Device type</item> (eg. Phone)</li>
+    <li><item>CPU make</item> (eg. Samsung)</li>
+    <li><item>CPU model</item> (eg. Exynos 7420)</li>
+    <li><item>Screen density</item> (eg. 560 dpi)</li>
+    <li><item>Screen size</item> (eg. 2560 x 1440)</li>
+    <li><item>RAM</item> (eg. 4096 MB)</li>
+    <li><item>Native platform</item> (eg. armeabi-v7a,armeabi,arm64v8a)</li>
+    <li><item>OpenGL ES version</item> (eg. 3.1)</li>
+    <li><item>Device language</item> (eg. English)</li>
 </ul>
 
 <hr />
 </ul>
 
 <hr />
-<p style="text-align: center;">Revision 1.2, 3 June 2016</p>
+<p style="text-align: center;"><em>Revision 1.2, 3 June 2016</em></p>
 </body>
 </html>
\ No newline at end of file
 </body>
 </html>
\ No newline at end of file
index 1df1387288a01fa35cd8dd8fc86045f194cd5c97..5b6da8cb1fd7c648843e7fc1dc3595eaf21e6e2a 100644 (file)
@@ -25,13 +25,24 @@ import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
+import android.support.v7.app.ActionBar;
 import android.support.v7.app.AppCompatActivity;
 import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
 
 public class AboutActivity extends AppCompatActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
 public class AboutActivity extends AppCompatActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.about_linearlayout);
+        setContentView(R.layout.about_coordinatorlayout);
+
+        // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
+        Toolbar supportAppBar = (Toolbar) findViewById(R.id.about_toolbar);
+        setSupportActionBar(supportAppBar);
+
+        // Display the home arrow on supportAppBar.
+        final ActionBar appBar = getSupportActionBar();
+        assert appBar != null;// This assert removes the incorrect warning on the following line that appBar might be null.
+        appBar.setDisplayHomeAsUpEnabled(true);
 
         //  Setup the ViewPager.
         ViewPager aboutViewPager = (ViewPager) findViewById(R.id.about_viewpager);
 
         //  Setup the ViewPager.
         ViewPager aboutViewPager = (ViewPager) findViewById(R.id.about_viewpager);
index 8b60b9d31d566eff3670ba4e6b20802b83ff069a..de910d5084ac1e47586a17bbf303b7526c857f17 100644 (file)
@@ -111,16 +111,42 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
     @SuppressLint("SetJavaScriptEnabled")
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
     @SuppressLint("SetJavaScriptEnabled")
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.coordinator_layout);
+        setContentView(R.layout.main_coordinatorlayout);
 
         // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
         Toolbar supportAppBar = (Toolbar) findViewById(R.id.appBar);
         setSupportActionBar(supportAppBar);
 
         // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
         Toolbar supportAppBar = (Toolbar) findViewById(R.id.appBar);
         setSupportActionBar(supportAppBar);
+        final ActionBar appBar = getSupportActionBar();
 
 
-        final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
+        // This is needed to get rid of the Android Studio warning that appBar might be null.
+        assert appBar != null;
+
+        // Add the custom url_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar.
+        appBar.setCustomView(R.layout.url_bar);
+        appBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
+
+        // Set the "go" button on the keyboard to load the URL in urlTextBox.
+        urlTextBox = (EditText) appBar.getCustomView().findViewById(R.id.urlTextBox);
+        urlTextBox.setOnKeyListener(new View.OnKeyListener() {
+            public boolean onKey(View v, int keyCode, KeyEvent event) {
+                // If the event is a key-down event on the "enter" button, load the URL.
+                if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
+                    // Load the URL into the mainWebView and consume the event.
+                    try {
+                        loadUrlFromTextBox();
+                    } catch (UnsupportedEncodingException e) {
+                        e.printStackTrace();
+                    }
+                    // If the enter key was pressed, consume the event.
+                    return true;
+                } else {
+                    // If any other key was pressed, do not consume the event.
+                    return false;
+                }
+            }
+        });
 
 
-        // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
-        final ActionBar appBar = getSupportActionBar();
+        final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
 
         // Implement swipe to refresh
         swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
 
         // Implement swipe to refresh
         swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
@@ -135,33 +161,6 @@ public class MainWebViewActivity extends AppCompatActivity implements Navigation
 
         mainWebView = (WebView) findViewById(R.id.mainWebView);
 
 
         mainWebView = (WebView) findViewById(R.id.mainWebView);
 
-        if (appBar != null) {
-            // Add the custom url_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar.
-            appBar.setCustomView(R.layout.url_bar);
-            appBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
-
-            // Set the "go" button on the keyboard to load the URL in urlTextBox.
-            urlTextBox = (EditText) appBar.getCustomView().findViewById(R.id.urlTextBox);
-            urlTextBox.setOnKeyListener(new View.OnKeyListener() {
-                public boolean onKey(View v, int keyCode, KeyEvent event) {
-                    // If the event is a key-down event on the "enter" button, load the URL.
-                    if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
-                        // Load the URL into the mainWebView and consume the event.
-                        try {
-                            loadUrlFromTextBox();
-                        } catch (UnsupportedEncodingException e) {
-                            e.printStackTrace();
-                        }
-                        // If the enter key was pressed, consume the event.
-                        return true;
-                    } else {
-                        // If any other key was pressed, do not consume the event.
-                        return false;
-                    }
-                }
-            });
-        }
-
         // Create the navigation drawer.
         drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
         // The DrawerTitle identifies the drawer in accessibility mode.
         // Create the navigation drawer.
         drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
         // The DrawerTitle identifies the drawer in accessibility mode.
diff --git a/app/src/main/res/layout/about_coordinatorlayout.xml b/app/src/main/res/layout/about_coordinatorlayout.xml
new file mode 100644 (file)
index 0000000..9455634
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright 2016 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
+
+  Privacy Browser is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  Privacy Browser is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
+
+<!-- android:fitsSystemWindows="true" moves the AppBar below the status bar.
+  When it is specified the theme should include <item name="android:windowTranslucentStatus">true</item>
+  to make the status bar transparent, darkened overlay. -->
+<android.support.design.widget.CoordinatorLayout
+    android:id="@+id/about_coordinatorlayout"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_height="match_parent"
+    android:layout_width="match_parent"
+    android:fitsSystemWindows="true" >
+
+    <!-- the LinearLayout with orientation="vertical" moves the ViewPager below the AppBarLayout. -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical" >
+
+        <!-- We need to set android:background="@color/blue" here or any space to the right of the TabLayout on large devices will be white. -->
+        <android.support.design.widget.AppBarLayout
+            android:id="@+id/about_appbarlayout"
+            android:layout_height="wrap_content"
+            android:layout_width="match_parent"
+            android:background="@color/blue"
+            android:theme="@style/PrivacyBrowser.AppBarOverlay" >
+
+            <!-- android:theme="@style/PrivacyBrowser.DarkAppBar" makes the text and icons in the AppBar white. -->
+            <android.support.v7.widget.Toolbar
+                android:id="@+id/about_toolbar"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/blue"
+                android:theme="@style/PrivacyBrowser.DarkAppBar"
+                app:popupTheme="@style/PrivacyBrowser.PopupOverlay" />
+
+            <android.support.design.widget.TabLayout
+                android:id="@+id/about_tablayout"
+                xmlns:android.support.design="http://schemas.android.com/apk/res-auto"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android.support.design:tabBackground="@color/blue"
+                android.support.design:tabTextColor="@color/light_blue"
+                android.support.design:tabSelectedTextColor="@color/white"
+                android.support.design:tabIndicatorColor="@color/white"
+                android.support.design:tabMode="scrollable" />
+        </android.support.design.widget.AppBarLayout>
+
+        <!-- android:layout_weight="1" makes about_viewpager fill the rest of the screen. -->
+        <android.support.v4.view.ViewPager
+            android:id="@+id/about_viewpager"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="1" />
+    </LinearLayout>
+</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/about_linearlayout.xml b/app/src/main/res/layout/about_linearlayout.xml
deleted file mode 100644 (file)
index 84f63f1..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  Copyright 2016 Soren Stoutner <soren@stoutner.com>.
-
-  This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
-
-  Privacy Browser is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  Privacy Browser is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
-
-<LinearLayout
-    android:id="@+id/about_linearlayout"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent"
-    android:orientation="vertical" >
-
-    <android.support.design.widget.TabLayout
-        android:id="@+id/about_tablayout"
-        xmlns:android.support.design="http://schemas.android.com/apk/res-auto"
-        android:layout_height="wrap_content"
-        android:layout_width="match_parent"
-        android.support.design:tabBackground="@color/blue"
-        android.support.design:tabTextColor="@color/light_blue"
-        android.support.design:tabSelectedTextColor="@color/white"
-        android.support.design:tabIndicatorColor="@color/white"
-        android.support.design:tabMode="scrollable" />
-
-    <!-- android:layout_weight="1" makes about_viewpager fill all the remaining space. -->
-    <android.support.v4.view.ViewPager
-        android:id="@+id/about_viewpager"
-        android:layout_width="match_parent"
-        android:layout_height="0px"
-        android:layout_weight="1" />
-</LinearLayout>
\ No newline at end of file
index c01998f6ecca5c06a98f5b4b2ab173cf198f1a7d..7aa3b794cdc2a5705746270e636d72424fbbdada 100644 (file)
@@ -40,7 +40,7 @@
             xmlns:tools="http://schemas.android.com/tools">
 
             <!--tools:ignore="ContentDescription" suppresses the lint warning about supplying a content description for the ImageView,
             xmlns:tools="http://schemas.android.com/tools">
 
             <!--tools:ignore="ContentDescription" suppresses the lint warning about supplying a content description for the ImageView,
-              which isn't needed in this case because the ImageView because is only decorative. -->
+              which isn't needed in this case because the ImageView is only decorative. -->
             <ImageView
                 android:id="@+id/about_version_icon"
                 android:layout_width="wrap_content"
             <ImageView
                 android:id="@+id/about_version_icon"
                 android:layout_width="wrap_content"
diff --git a/app/src/main/res/layout/coordinator_layout.xml b/app/src/main/res/layout/coordinator_layout.xml
deleted file mode 100644 (file)
index 5438c3b..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  Copyright 2015-2016 Soren Stoutner <soren@stoutner.com>.
-
-  This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>>.
-
-  Privacy Browser is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  Privacy Browser is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
-
-<android.support.v4.widget.DrawerLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:id="@+id/drawerLayout"
-    android:layout_height="match_parent"
-    android:layout_width="match_parent">
-
-    <!-- The main content view. -->
-    <!-- android:fitsSystemWindows="true" moves rootCoordinatorLayout below the system status bar. -->
-    <!-- Setting the layout root to be focusableInTouchMode prevents urlTextBox from stealing focus on launch and opening the keyboard. -->
-    <android.support.design.widget.CoordinatorLayout
-        android:id="@+id/rootCoordinatorLayout"
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        xmlns:app="http://schemas.android.com/apk/res-auto"
-        xmlns:tools="http://schemas.android.com/tools"
-        tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:fitsSystemWindows="true"
-        android:focusable="true"
-        android:focusableInTouchMode="true" >
-
-        <android.support.design.widget.AppBarLayout
-            android:id="@+id/appBarLayout"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:theme="@style/AppTheme.AppBarOverlay" >
-
-            <android.support.v7.widget.Toolbar
-                android:id="@+id/appBar"
-                android:layout_width="match_parent"
-                android:layout_height="?attr/actionBarSize"
-                android:background="?attr/colorPrimary"
-                app:popupTheme="@style/AppTheme.PopupOverlay" />
-        </android.support.design.widget.AppBarLayout>
-
-        <include layout="@layout/main_webview" />
-    </android.support.design.widget.CoordinatorLayout>
-
-    <!-- The navigation drawer. -->
-    <android.support.design.widget.NavigationView
-        android:id="@+id/navigationView"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_gravity="start"
-        app:headerLayout="@layout/navigation_header"
-        app:menu="@menu/menu_navigation"/>
-
-    <!-- fullScreenVideoFrameLayout is used to display full screen videos.  It is initially android:visibility="gone" to hide it from view. -->
-    <FrameLayout
-        android:id="@+id/fullScreenVideoFrameLayout"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:visibility="gone"
-        android:background="@color/black" />
-</android.support.v4.widget.DrawerLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/main_coordinatorlayout.xml b/app/src/main/res/layout/main_coordinatorlayout.xml
new file mode 100644 (file)
index 0000000..07a5874
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+  Copyright 2015-2016 Soren Stoutner <soren@stoutner.com>.
+
+  This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>>.
+
+  Privacy Browser is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  Privacy Browser is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
+
+<android.support.v4.widget.DrawerLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/drawerLayout"
+    android:layout_height="match_parent"
+    android:layout_width="match_parent">
+
+    <!-- android:fitsSystemWindows="true" moves rootCoordinatorLayout below the system status bar.
+      When it is specified the theme should include <item name="android:windowTranslucentStatus">true</item>.
+      Setting the layout root to be focusableInTouchMode prevents urlTextBox from stealing focus on launch and opening the keyboard. -->
+    <android.support.design.widget.CoordinatorLayout
+        android:id="@+id/rootCoordinatorLayout"
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        xmlns:tools="http://schemas.android.com/tools"
+        tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:fitsSystemWindows="true"
+        android:focusable="true"
+        android:focusableInTouchMode="true" >
+
+        <!-- The purpose of the LinearLayout is to place the included main_webview below appBarLayout. -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:orientation="vertical">
+
+            <android.support.design.widget.AppBarLayout
+                android:id="@+id/appBarLayout"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:theme="@style/PrivacyBrowser.AppBarOverlay" >
+
+                <android.support.v7.widget.Toolbar
+                    android:id="@+id/appBar"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="?attr/colorPrimary"
+                    app:popupTheme="@style/PrivacyBrowser.PopupOverlay" />
+            </android.support.design.widget.AppBarLayout>
+
+            <include layout="@layout/main_webview" />
+        </LinearLayout>
+    </android.support.design.widget.CoordinatorLayout>
+
+    <!-- The navigation drawer. -->
+    <android.support.design.widget.NavigationView
+        android:id="@+id/navigationView"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_gravity="start"
+        app:headerLayout="@layout/navigation_header"
+        app:menu="@menu/menu_navigation"/>
+
+    <!-- fullScreenVideoFrameLayout is used to display full screen videos.  It is initially android:visibility="gone" to hide it from view. -->
+    <FrameLayout
+        android:id="@+id/fullScreenVideoFrameLayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone"
+        android:background="@color/black" />
+</android.support.v4.widget.DrawerLayout>
\ No newline at end of file
index ed8bcc6850dddb61d69cd72a13747bef0b2f6897..b792066d63d03040359a3e90601d7d0f343d21c7 100644 (file)
   You should have received a copy of the GNU General Public License
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
   You should have received a copy of the GNU General Public License
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
-<!-- android:layout_martinTop="?attr/actionBarSize" moves the RelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView. -->
-<!-- the RelativeLayout has an id of adView in the standard flavor so that the ad commands (which do nothing in the standard flavor) don't produce errors. -->
+<!-- android:layout_martinTop="?attr/actionBarSize" moves the RelativeLayout below the appBarLayout, which otherwise would cover the top of mainWebView.
+  the RelativeLayout has an id of adView in the standard flavor so that the ad commands (which do nothing in the standard flavor) don't produce errors.
+  android:layout_weight="1" sets the RelativeLayout to fill the rest of the screen because it is encapsulated in a LinearLayout with android:orientation="vertical". -->
 <RelativeLayout
     android:id="@+id/adView"
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
 <RelativeLayout
     android:id="@+id/adView"
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:layout_marginTop="?attr/actionBarSize"
+    android:layout_height="0dp"
+    android:layout_weight="1"
     tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
     tools:context="com.stoutner.privacybrowser.MainWebViewActivity"
-    tools:showIn="@layout/coordinator_layout" >
+    tools:showIn="@layout/main_coordinatorlayout" >
 
     <android.support.v4.widget.SwipeRefreshLayout
         android:id="@+id/swipeRefreshLayout"
         android:layout_width="match_parent"
         android:layout_height="match_parent" >
 
 
     <android.support.v4.widget.SwipeRefreshLayout
         android:id="@+id/swipeRefreshLayout"
         android:layout_width="match_parent"
         android:layout_height="match_parent" >
 
-        <!-- Google does not currently want to support hiding the AppBar on scroll for a WebView child with the Support Toolbar.  https://code.google.com/p/android/issues/detail?id=200394 -->
+        <!-- Google does not currently want to support hiding the AppBar on scroll for a WebView child with the Support Toolbar.
+          https://code.google.com/p/android/issues/detail?id=200394 -->
         <WebView
             android:id="@+id/mainWebView"
             android:layout_width="match_parent"
         <WebView
             android:id="@+id/mainWebView"
             android:layout_width="match_parent"
index 96ec9d69419596bbebb2669cfbb8d1dc10179132..86223d31c700b5d1f6f652d6a12901c989f0ca68 100644 (file)
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <resources>
   along with Privacy Browser.  If not, see <http://www.gnu.org/licenses/>. -->
 
 <resources>
-
-    <!-- The default actionBarSize is 56dp.  53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge. -->
-    <!-- android:windowTranslucentStatus requires API >= 19.  It makes the system status bar transparent. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light">
-        <item name="colorAccent">@color/blue</item>
+    <!-- The default actionBarSize is 56dp.  53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge.
+      android:windowTranslucentStatus requires API >= 19.  It makes the system status bar transparent.
+      When it is specified the root layout should include android:fitsSystemWindows="true". -->
+    <style name="PrivacyBrowser.MainWebView">
         <item name="android:actionBarSize">53dp</item>
         <item name="android:actionBarSize">53dp</item>
+        <item name="android:windowTranslucentStatus">true</item>
     </style>
 
     </style>
 
-    <style name="AppTheme.NoActionBar">
-        <item name="windowActionBar">false</item>
-        <item name="windowNoTitle">true</item>
+    <!-- android:windowTranslucentStatus requires API >= 19.  It makes the system status bar transparent.
+      When it is specified the root layout should include android:fitsSystemWindows="true".
+      colorPrimaryDark goes behind the status bar, which is then darkened by the overlay. -->
+    <style name="PrivacyBrowser.About">
         <item name="android:windowTranslucentStatus">true</item>
         <item name="android:windowTranslucentStatus">true</item>
+        <item name="colorPrimaryDark">@color/blue</item>
     </style>
     </style>
-
-    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
-
-    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
-
 </resources>
\ No newline at end of file
 </resources>
\ No newline at end of file
index c9d97d929d48f93161fffc0b7937fcc4f2a8bf47..d11ddae2df2fca53bf32bbc7957a2d1abd7db3a1 100644 (file)
 
 <resources>
 
 
 <resources>
 
-    <!-- The default actionBarSize is 56dp.  53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light">
+    <style name="PrivacyBrowser" parent="Theme.AppCompat.Light.NoActionBar">
         <item name="colorAccent">@color/blue</item>
         <item name="colorAccent">@color/blue</item>
+    </style>
+
+    <!-- The default actionBarSize is 56dp.  53dp is the smallest that doesn't cause the urlTextBox to scroll vertically with a font size of Huge. -->
+    <style name="PrivacyBrowser.MainWebView">
         <item name="android:actionBarSize">53dp</item>
     </style>
 
         <item name="android:actionBarSize">53dp</item>
     </style>
 
-    <style name="AppTheme.NoActionBar">
-        <item name="windowActionBar">false</item>
-        <item name="windowNoTitle">true</item>
+    <style name="PrivacyBrowser.About">
+        <item name="colorPrimaryDark">@color/blue</item>
     </style>
 
     </style>
 
-    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
+    <!-- colorPrimaryDark is the color of the status bar. -->
+    <style name="PrivacyBrowser.Settings" parent="Theme.AppCompat.Light.DarkActionBar">
+        <item name="colorPrimary">@color/blue</item>
+        <item name="colorPrimaryDark">@color/dark_blue</item>
+        <item name="colorAccent">@color/blue</item>
+    </style>
+
+    <!-- ThemeOverlay.AppCompat.Dark.ActionBar" makes the text and the icons in the AppBar white. -->
+    <style name="PrivacyBrowser.DarkAppBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
+
+    <style name="PrivacyBrowser.AppBarOverlay" parent="ThemeOverlay.AppCompat.ActionBar" />
 
 
-    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
+    <style name="PrivacyBrowser.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
 
 </resources>
\ No newline at end of file
 
 </resources>
\ No newline at end of file
index 03b835e0c8a1183b02bab8529635953180cb5529..e08c71e57c12b5272aedc8bc88423a17940f423b 100644 (file)
@@ -54,8 +54,8 @@
             android:entryValues="@array/user_agent_entry_values"
             android:defaultValue="Default user agent" />
 
             android:entryValues="@array/user_agent_entry_values"
             android:defaultValue="Default user agent" />
 
-        <!-- android:inputType="textVisiblePassword" sets the keyboard to have a dedicated number row. -->
-        <!-- android:imeOptions="flagNoExtractUi" is not set because with the dedicated number row there often isn't room to see the EditText in landscape orientation. -->
+        <!-- android:inputType="textVisiblePassword" sets the keyboard to have a dedicated number row.
+          android:imeOptions="flagNoExtractUi" is not set because with the dedicated number row there often isn't room to see the EditText in landscape orientation. -->
         <EditTextPreference
             android:key="custom_user_agent"
             android:title="@string/custom_user_agent"
         <EditTextPreference
             android:key="custom_user_agent"
             android:title="@string/custom_user_agent"
             android:entryValues="@array/javascript_disabled_search_entry_values"
             android:defaultValue="https://duckduckgo.com/html/?q=" />
 
             android:entryValues="@array/javascript_disabled_search_entry_values"
             android:defaultValue="https://duckduckgo.com/html/?q=" />
 
-        <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box there often isn't enough space to see the EditText in landscape orientation. -->
+        <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box
+          there often isn't enough space to see the EditText in landscape orientation.
+          android:singleLine="true" is not specified because it is the EditTextPreference default. -->
         <EditTextPreference
             android:key="javascript_disabled_search_custom_url"
             android:title="@string/javascript_disabled_search_custom_url"
             android:defaultValue=""
         <EditTextPreference
             android:key="javascript_disabled_search_custom_url"
             android:title="@string/javascript_disabled_search_custom_url"
             android:defaultValue=""
-            android:inputType="textUri"
-            android:singleLine="true" />
+            android:inputType="textUri" />
 
         <ListPreference
             android:key="javascript_enabled_search"
 
         <ListPreference
             android:key="javascript_enabled_search"
             android:entryValues="@array/javascript_enabled_search_entry_values"
             android:defaultValue="https://duckduckgo.com/?q=" />
 
             android:entryValues="@array/javascript_enabled_search_entry_values"
             android:defaultValue="https://duckduckgo.com/?q=" />
 
-        <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box there often isn't enough space to see the EditText in landscape orientation. -->
+        <!-- android:imeOptions="flagNoExtractUi" is not set because with the the length of the title of the dialog box
+          there often isn't enough space to see the EditText in landscape orientation.
+          android:singleLine="true" is not specified because it is the EditTextPreference default. -->
         <EditTextPreference
             android:key="javascript_enabled_search_custom_url"
             android:title="@string/javascript_enabled_search_custom_url"
             android:defaultValue=""
         <EditTextPreference
             android:key="javascript_enabled_search_custom_url"
             android:title="@string/javascript_enabled_search_custom_url"
             android:defaultValue=""
-            android:inputType="textUri"
-            android:singleLine="true" />
+            android:inputType="textUri" />
     </PreferenceCategory>
 
     <PreferenceCategory
         android:key="general"
         android:title="@string/general" >
 
     </PreferenceCategory>
 
     <PreferenceCategory
         android:key="general"
         android:title="@string/general" >
 
-        <!-- android:imeOptions="flagNoExtractUi" is not set because in special character mode there often isn't enough space to see the EditText in landscape orientation. -->
+        <!-- android:imeOptions="flagNoExtractUi" is not set because in special character mode there often isn't enough space to see the EditText in landscape orientation.
+          android:singleLine="true" is not specified because it is the EditTextPreference default. -->
         <EditTextPreference
             android:key="homepage"
             android:title="@string/homepage_preference"
             android:defaultValue="https://www.duckduckgo.com"
         <EditTextPreference
             android:key="homepage"
             android:title="@string/homepage_preference"
             android:defaultValue="https://www.duckduckgo.com"
-            android:inputType="textUri"
-            android:singleLine="true" />
+            android:inputType="textUri" />
 
         <SwitchPreference
             android:key="swipe_to_refresh_enabled"
 
         <SwitchPreference
             android:key="swipe_to_refresh_enabled"